【发布时间】:2011-06-10 14:22:21
【问题描述】:
我试图更深入地掌握原型继承和类创建(我知道,还有其他方法,但为此我试图掌握原型。)我的问题是:使用以下代码例如,有没有办法在 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"
编辑:我正在尝试将this.name 和this.size 替换为可以在原型函数中访问的私有变量。很抱歉没有说清楚!
【问题讨论】:
-
你能不把语言问题标记为“强化学习”吗?
-
@Don-Reba,是的,很抱歉。我把它标记为“学习”,它一定是为了强化它。 EDIT 他们现在有一个合适的标签用于原型继承,当我制作这个时它不可用。切换到它。很抱歉造成混乱。
-
@ecampver 是的,他们问了我同样的问题。
-
其实是有办法的。检查this answer。
标签: javascript prototypal-inheritance