将函数传递给其他原型
Posted
技术标签:
【中文标题】将函数传递给其他原型【英文标题】:Passing function to other prototype 【发布时间】:2013-02-15 12:47:53 【问题描述】:我有以下代码
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
??
有人可以帮助解释这种行为以及如何解决它吗?
【问题讨论】:
你到底想在这里做什么?你能展示一个不那么抽象/令人困惑的例子吗?我不明白... 大声笑……说来话长!我在节点中只使用了多个模块,它们让我很困惑。我不得不抽象出相同的流程来解决这里的问题。 【参考方案1】:似乎你想做这个(使用 op.callback 作为函数):
var Callback = function (op)
this.callback = op.callback;
return this.callback;
;
函数应该用()
调用
else
this.callback();
http://jsfiddle.net/oceog/SashU/3/
this is example where it can be used
【讨论】:
啊,明白了。看起来当我这样做callback: myCallback
时,callback
var 只指向新的 Callback
obj 而不是 Callback.callback
原型。【参考方案2】:
正如已经指出的那样,您甚至没有尝试在第 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/ 显示了一个工作示例。
【讨论】:
【参考方案3】:这行得通:
var myTest = new Test(
aa: 1,
callback: myCallback.callback()
);
我想这就是你的意思。如果不是,请说明什么不是打印。
这是行不通的,因为它只是一个参考——一个分配。
callback: myCallback
这是执行它的()
所以:
callback: myCallback.callback;
然后:
this.callback();
如果我不够简洁,我深表歉意。我希望我能理解您的要求。
【讨论】:
谢谢。现在完全明白了。以上是关于将函数传递给其他原型的主要内容,如果未能解决你的问题,请参考以下文章
当我们将数组作为参数传递给其他函数时,数组的值如何变化? [复制]