タイトルについては申し訳ありませんが、簡潔な言い方はありません。私は次のコードに取り組んでいます。これは、一連のカウンターを 1 つの大きなカウンターに連結することを目的としています。時計か何かを作ること。
function subcounter(max, name, trigger) {
this.index = 0;
this.trigger = trigger;
this.name = name;
this.tick = function() {
this.index++;
if (this.index==max) {
this.index=0;
this.trigger();
}
}
this.show = function() {
alert(this.name+' triggered');
}
}
y = new subcounter(2,'y',function(){alert('finished')});
x = new subcounter(2,'x',y.tick);
for (var index = 0; index < 12; index++) {
alert ([x.index, y.index]);
x.tick();
}
これは期待どおりに機能しません。デバッグのために、上記の行を次のように置き換えました。
x = new subcounter(2,'x',y.show);
そして、「y トリガー」の代わりに「x トリガー」が表示されることがわかりました。何が起きてる?(Firefoxで試しました)。
ご回答、または に関するドキュメントを教えていただきありがとうございますthis
。ただし、私の脳は、1 つのオブジェクト インスタンスにスコープされた関数がどのように別のオブジェクト インスタンスの関数に解決されるかをまだ理解できていません。
答えは次のようです。
x = new subcounter(2,'x',function() {y.tick();});
しかし、オリジナルが期待どおりに機能しない理由を本当に理解したいと思います。