後で動作を動的に変更できるように、コールバック関数をラップできるタイマー関数の作成を試み始めました。
これは、私がまだ関数を本当に理解していないこと、そして「これ」で何が起こっているのかを完全に理解していないことを一般的に認識することにつながりました
私はjsfiddleにテスト環境をセットアップしています
myns = {};
myns.somefunc = function(txt) {
this.data = txt;
this.play = function() {
alert(this.data + ' : '+dafunc.data);
};
};
var dafunc = new myns.somefunc('hello world');
myns.Timer = function(msec, callback) {
this.callback = null;
this.timerID = null;
this.ding = function() {
this.callback();
};
this.set1 = function( msec, callback ) {
this.stop();
this.callback = callback;
this.timerID = setTimeout(this.ding, msec );
};
this.set2 = function( msec, callback ) {
this.callback = callback;
var wrappedDing = (function(who) {
return function() {
who.ding();
};
})(this);
this.timerID = setTimeout(wrappedDing, msec );
};
//this.set1(msec, callback);
this.set2(msec, callback);
};
var ttimer = new myns.Timer(1000, dafunc.play);
set1 メソッドを使用すると、コールバックが機能しません。だから私は set2 メソッドを試しています。これで play メソッドにたどり着きますが、「これ」は somefunc のインスタンスを参照していません。
私は正しい方向に進んでいると思っていましたが、「これ」の混乱に混乱しています。
手がかりは大歓迎です。