在Nodejs中设置Prototype类的成员变量

时间:2013-11-04 18:14:37

标签: javascript node.js oop prototypejs

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它就可以正常工作。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您的代码示例不完整,但我相信您的真实代码仍会遇到以下问题:

process.nextTick(function() {
    console.log(m); //where does the m variable came from?
});

将您的代码更改为:

process.nextTick((function() {
    console.log(this.m);
}).bind(this));

bind用于确保this回调中的nextTick值是当前MyClass个实例。