jquery - 使用.call()时传递参数

时间:2011-05-16 10:49:50

标签: javascript jquery

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

当我传递参数时,它们在回调函数中总是未定义

编辑(示例):

我的插件中会有一个选项对象:

var options = {

errorCallback : function( errors ) {}

}

我会从我的插件中调用这个:

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

我会像这样初始化我的插件

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

2 个答案:

答案 0 :(得分:39)

调用的第一个参数是函数的'this'。如果要将变量作为参数从第二个开始传递。

configs.errorCallback.call(undefined, errors);

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

答案 1 :(得分:10)

configs.errorCallback.call(errors);

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

如果您不想设置this,那么您可以像往常一样调用该功能:

configs.errorCallback(errors);

如果您确实要设置this,则需要将其设置为call的第一个参数。后续参数将传递给函数。

例如:

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

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