2011-05-16 126 views
15

在JavaScript中使用.call()时,如何将参数传递给函数?jquery - 使用.call时传递参数()

当我传递参数,他们都在回调函数总是不确定的

EDIT(例子):

我将有一个选项对象在我的插件:

var options = { 

errorCallback : function(errors) {} 

} 

我会打电话这从我的插件是这样的:

var errors = "Test error list"; 
configs.errorCallback.call(errors); 

我将初始化我的pl ugin like this

$('#plugin-element').myPlugin(
     { 
      'errorCallback' : function errorrCallbackFunction(errors) { 
        console.log(errors) //always undefined 
       } 
     } 
+3

你能举一个你做什么不行的例子吗? – lonesomeday 2011-05-16 10:51:09

+0

回调函数?哪个回调函数? .call()不是特定于jQuery的,它是一个JavaScript函数(或者,更准确地说,它是函数对象的一个​​方法)。 – PJP 2011-05-16 10:55:26

回答

38

调用的第一个参数是函数的'this'。如果你想从第二个参数开始传递变量。

configs.errorCallback.call(undefined, errors); 

下面是文档:Function.prototype.call()

10
configs.errorCallback.call(errors); 

这是没有必要的。如果要设置函数调用的上下文,则只需使用call。这意味着回调中的this的值。

如果你不想设置this,那么你可以调用的函数,你通常会:

configs.errorCallback(errors); 

如果你想设置this,那么你需要将其设置为第一参数为call。随后的参数被传递给函数。

例如:

var configs = { 
    errorCallback : function(errors) {} 
}; 
configs.errorCallback.call(configs, errors); 

errorCallback,您可以使用关键字this可以访问configs