0
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);
}

上記のコードは、他のインスタンスで初期化されたプライベート変数を常に上書きします。0, 1, 2 ではなく 2, 2, 2 と表示されます。メンバー変数mはこのように適切に設定されていますか?

それでも、なくても問題なく動作しprocess.nextTickます。何か案が?

4

1 に答える 1

2

コード例は不完全ですが、実際のコードにはまだ次の問題があると思います。

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

コードを次のように変更します。

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

bindthisコールバック内の値nextTickが現在のMyClassインスタンスであることを確認するために使用されます。

于 2013-11-04T18:32:03.343 に答える