在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
}
}
答案 0 :(得分:39)
调用的第一个参数是函数的'this'。如果要将变量作为参数从第二个开始传递。
configs.errorCallback.call(undefined, errors);
答案 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
。