Jquery - параметры передачи при использовании .call()

Как передать параметры функции при использовании .call() в Javascript?

Когда я передаю параметры, они всегда undefined в функции обратного вызова

EDIT (пример):

У меня будет объект options в моем плагине:

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
               }
       }

Ответы

Ответ 1

Первым аргументом вызова является 'this' функции. Если вы хотите передать переменную в качестве аргумента, начиная со второго.

configs.errorCallback.call(undefined, errors);

Вот документация: Function.prototype.call()

Ответ 2

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.