0

这是我的代码:

function A()
{
    this.prop = "A";
    this.propName = this.getProp() + 'name';
}
A.prototype.getProp = function(){return this.prop;}
A.prototype.getPropName = function(){return this.propName;}

function B()
{
    this.prop = "B";
}
B.prototype = new A();

var b = new B();
console.log(b.getPropName());

输出是:

Aname

但我希望这样:

Bname

我究竟做错了什么?

编辑:

谢谢,我知道原因了。

B从来没有一个名为'propName'的自己的属性,所以它使用来自A的'propName',它在'new A'中初始化,此后它永远不会改变。

我可以通过以下方式修复它:

redefine the getter to function(){return this.prop + 'name';}
re-initilize in B
later initilize, keep the propName field, but default to null, the getter become to 
function(){return this.propName||(this.propName = this.prop + 'name')} 

我想用最后一个。

再次感谢你。

4

0 回答 0