[英]Passing function to other prototype
我有下面的代码
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
?
有人可以帮助解释此行为以及如何解决此问题吗?
这有效:
var myTest = new Test({
aa: 1,
callback: myCallback.callback()
});
我认为这就是您的意思。 如果不是,请弄清楚什么不是打印。
这是行不通的,因为它只是一个参考-分配。
callback: myCallback
这就是执行它的原因
所以:
callback: myCallback.callback;
然后:
this.callback();
如果我不够简洁,我深表歉意。 我希望我能理解您的要求。
似乎您想这样做(使用op.callback作为function):
var Callback = function (op) {
this.callback = op.callback;
return this.callback;
};
和函数应使用()
调用
} else {
this.callback();
}
正如已经指出的那样,您甚至没有尝试在第19行调用this.callback
。使用括号对其进行调用。
即使那样,它也不起作用。 当您执行var myTest = new Test({ aa: 1, callback: myCallback });
,myCallBack不是函数; 这是一个带有属性callback
的对象。 将第19行的this.callback
更改为this.callback.callback()
以调用该函数。 在第19行, this.callback
是Callback的实例,Callback 是具有函数属性callback
的对象。
http://jsfiddle.net/trevordixon/SashU/4/显示了一个有效的示例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.