Я пытаюсь получить более глубокое удержание прототипального наследования и создания классов (я знаю, есть другие способы, но для этого я пытаюсь понять прототипы.) Мой вопрос: использование следующего кода Например, есть ли способ создать частные переменные внутри Tree
и Fruit
, которые не будут возвращены с помощью функции, но все еще доступны для прототипов функций genus
и bulk
?
var Tree = function ( name, size ) {
this.name = name;
this.size = size;
};
Tree.prototype.genus = function(){
return ((typeof this.name !== 'undefined') ? this.name : 'Hybridicus Maximus');
};
Tree.prototype.bulk = function(){
return ((typeof this.size !== 'undefined') ? this.size : '8') + ' ft';
};
var Fruit = function( name, size ) {
this.name = name;
this.size = size;
};
Fruit.prototype = new Tree();
// Fruit.prototype = Tree.prototype; -- I know this can be used, too.
Fruit.prototype.bulk = function(){
return ((typeof this.size !== 'undefined') ? Math.floor(this.size / 2) : '4') + ' lbs';
};
var pine = new Tree('Pine', 9);
var apple = new Fruit('Apple', 6);
console.log(pine.genus(), pine.bulk()); // Outputs: "Pine 9 ft"
console.log(apple.genus(), apple.bulk()); // Outputs: "Apple 3 lbs"
EDIT: я пытаюсь заменить this.name
и this.size
частными переменными, доступ к которым можно получить в функциях прототипа. Извините за отсутствие ясности!