函数构造函数中的局部变量
Local variables in function constructors
在下面的代码中,
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
副本?
每个对象的构造函数都有自己的_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
相关文章:
- Javascript用函数return替换局部变量
- 构造函数函数闭包变量
- 每次调用函数时,都要修改Javascript中的局部变量
- 正在向构造函数添加作用域变量
- 尝试将变量传递到对象中时的作用域问题'的方法构造函数
- 返回变量作为构造函数
- “var”变量,“this”变量和“global”变量 - 在JavaScript构造函数中
- JavaScript 构造函数中的“var”变量会发生什么
- 在 promise 中获取构造函数变量
- 创建所有原型函数均可访问的局部变量
- JavaScript:在调用之前将函数重新分配给局部变量,而不是直接调用并对'这'
- 函数中的局部变量
- 局部变量仍可通过函数访问
- 调用与局部变量同名的函数
- 为局部嵌套函数中的全局变量设置值
- 函数构造函数中的局部变量
- 构造函数参数和局部变量
- 如何在JavaScript中将局部变量从函数传递到事件侦听器函数
- JavaScript -将名称空间分配给局部变量以用于构造函数,但不确定发生了什么
- JavaScript引擎如何读取和执行具有冲突全局和局部变量的函数