我有以下代码
http://jsfiddle.net/qhoc/SashU/1/
var Callback = function(op) {
this.callback = op.callback;
}
var Test = function (op) {
for (var option in op) {
if (!this[option]) this[option] = op[option];
}
}
Test.prototype.init = function(bb) {
console.log('aa = ' + this.aa);
console.log('bb = ' + bb);
if (bb < 3) {
this.init(bb + 1);
} else {
this.callback;
}
}
var finalCallback = function() {
console.log('this is finalCallback');
}
var myCallback = new Callback({
callback: finalCallback
});
var myTest = new Test({
aa: 1,
callback: myCallback
});
myTest.init(1);
第19行没有打印'this is finalCallback'
AT ALL因为this.callback;
已执行但未指向某个功能。但下面的工作原理:
myTest.init(1);
myCallback.callback();
我想在将myCallback
传递给myTest
时,它没有通过finalCallback
??
有人可以帮助解释这种行为以及如何解决这个问题吗?
答案 0 :(得分:1)
这有效:
var myTest = new Test({
aa: 1,
callback: myCallback.callback()
});
我认为这就是你的意思。如果没有,请澄清什么不打印。
这不起作用,因为它只是一个参考 - 一项任务。
callback: myCallback
这就是执行它的原因()
这样:
callback: myCallback.callback;
然后:
this.callback();
如果我不够简洁,我道歉。我希望我理解你的要求。
答案 1 :(得分:1)
似乎你想做这个(使用op.callback作为函数):
var Callback = function (op) {
this.callback = op.callback;
return this.callback;
};
应使用()
调用和函数
} else {
this.callback();
}
答案 2 :(得分:1)
正如已经指出的那样,你甚至没有尝试在第19行调用this.callback
。用括号调用它。
即使这样,它也行不通。执行var myTest = new Test({
aa: 1,
callback: myCallback
});
时,myCallBack不是函数;它是一个具有属性callback
的对象。将第19行的this.callback
更改为this.callback.callback()
以调用该函数。一行19,this.callback
是Callback的一个实例 - 一个具有属性callback
的对象, 是一个函数。
http://jsfiddle.net/trevordixon/SashU/4/显示了一个有效的例子。