我开始尝试创建一个计时器函数,它可以让我包装一个回调函数,以便以后可以动态地改变行为。
这导致了一个普遍的认识,即我真的不了解函数,并且绝对不了解“this”发生了什么
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 方法,但“this”并不是指 somefunc 的实例。
我以为我走在正确的轨道上,但是“这个”的混淆让我感到困惑。
任何线索都会受到欢迎。