将函数传递给其他原型

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();

如果我不够简洁,我深表歉意。我希望我能理解您的要求。

【讨论】:

谢谢。现在完全明白了。

以上是关于将函数传递给其他原型的主要内容,如果未能解决你的问题,请参考以下文章

使用 match.call 将所有参数传递给其他函数

当我们将数组作为参数传递给其他函数时,数组的值如何变化? [复制]

如何将参数传递给其他函数(通常通过 scipy)?

我试图将一个非可变整数参数从一个函数传递给其他定义的函数;我的错误是啥?

将其他参数传递给gtk函数

如何将 url 参数传递给视图以供其他类函数和模板使用