在下面的代码中,
function BaseClass(){
var _localVar = 1;
this.prop1 = _localVar;
}
function DerivedClass(){
BaseClass.call(this);
this.prop2 = 2;
}
var obj1 = new BaseClass();
var obj2 = new BaseClass();
var obj3 = new DerivedClass();
console.log(obj1.prop1);
console.log(obj2.prop1);
console.log(obj3.prop1);
obj1
,obj2
和obj3
是否有自己的_localVar
副本?
答案 0 :(得分:1)
每个对象的构造函数都有自己的_localVar
副本,因为它只是函数作用域内的局部变量,因此每次执行函数时都会创建一个新的局部变量,但是你的方式是你的代码被构造,它在构造函数中使用一次,复制到一个成员属性,然后再也没有为那个特定的构造函数实例引用。
如果您做了类似的事情,那么您可以看到每个人的不同之处并持续了对象的生命周期:
function BaseClass(val){
var _localVar = val;
this.getValue = function() {return _localVar};
this.setValue = funciton(newVal) {_localVar = newVal;}
}
var x = new BaseClass(1);
var y = new BaseClass(2);
console.log(x.getValue()); // 1
console.log(y.getValue()); // 2
x.setValue(10);
console.log(x.getValue()); // 10
console.log(y.getValue()); // 2