我有以下代码
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'
因为 this.callback;
已执行但没有指向到一个函数。但以下有效:
myTest.init(1);
myCallback.callback();
我猜当将myCallback
传递给myTest
时,它没有传递finalCallback
??
有人可以帮忙解释一下这种行为以及如何解决它吗?
最佳答案
似乎你想这样做(使用 op.callback 作为函数):
var Callback = function (op) {
this.callback = op.callback;
return this.callback;
};
并且函数应该使用()
调用
} else {
this.callback();
}
关于node.js - 将函数传递给其他原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15150601/