在 Nodejs 中设置 Prototype 类的成员变量
Setting member variables of Prototype class in Nodejs
var MyClass = (function() {
function MyClass(m) {
this.m = m;
}
MyClass.prototype.temp = function() {
process.nextTick(function() {
console.log(m);
});
}
});
for (var i=0; i<3; i++) {
var t = new MyClass(i);
}
上面的代码总是覆盖在其他实例中初始化的私有变量。它显示 2、2、2 而不是 0、1、2。成员变量m
以这种方式正确设置吗?
然而,它在没有process.nextTick
的情况下工作正常。知道吗?
您的代码示例不完整,但是我相信您的真实代码仍然存在以下问题:
process.nextTick(function() {
console.log(m); //where does the m variable came from?
});
将代码更改为:
process.nextTick((function() {
console.log(this.m);
}).bind(this));
bind
用于确保nextTick
回调中的this
值是当前MyClass
实例。
相关文章:
- 如何在 JavaScript 中“获取”成员变量
- 从JavaScript对象访问数据's数组成员变量
- Javascript通过引用访问成员变量
- ES6 类中成员变量的声明
- 在 Nodejs 中设置 Prototype 类的成员变量
- 如何从回调访问成员变量
- 闭包中的局部变量如何成为 Ext JS 中的私有成员变量
- 来自对象的内部 AJAX 调用正在清除成员变量
- 使用经典继承,在 JavaScript 中使用“类级”/成员变量是一个好主意还是坏主意
- 访问Java对象's具有字符串名称的成员变量
- Javascript对象成员变量未克隆
- 从自调用嵌套函数中引用成员变量
- 如何访问javascript中的asp.net代码隐藏会话对象成员变量
- 在JavaScript中声明私有静态成员变量
- Javascript和jQuery:从事件回调中访问类成员变量
- AngularJS中的带有成员变量的子类工厂
- Javascript:如何在创建立即调用的对象时访问公共成员变量
- 未初始化的成员变量跨平台不一致
- 从返回的承诺中设置成员变量
- 如何在碰撞检测函数中获取成员变量