2011-05-16 24 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