我创建了一个如下所示的对象。
var BaseObject = function(){
var base = this;
base.prop;
base.setProp = function(val){
base.prop = val;
}
}
当我调用该setProp
方法时,我得到以下信息。
var a = new BaseObject();
var b = new BaseObject();
a.setProp("foo");
b.setProp("bar");
console.log(a.prop); // outputs 'foo'
console.log(b.prop); // outputs 'bar'
然后我创建了另一个像这样继承的对象BaseObject
。
var TestObject = function(){
// do something
}
TestObject.prototype = new BaseObject();
当我做同样的事情时,我得到了一个我没有预料到的结果。
var a = new TestObject();
var b = new TestObject();
a.setProp("foo");
b.setProp("bar");
console.log(a.prop); // outputs 'bar'
console.log(b.prop); // outputs 'bar'
我不知道为什么。最近我读了很多关于闭包和原型继承的文章,我怀疑我已经把它搞糊涂了。因此,任何有关此特定示例为何按其方式工作的指示都将不胜感激。