JavaScript метод call()
JavaScript FunctionОпределение и применение
JavaScript метод call() позволяет вызывать (выполнять) функцию как метод объекта, устанавливая ее контекст исполнения (this) в указанное значение, передавая при этом необходимые аргументы.
Чтобы вызвать функцию (без аргументов) как метод объекта достаточно использовать метод call(), или apply() следующим образом:
func.call( obj ); func.apply( obj );
Все аргументы метода call(), следующие за первым аргументом, который определяет контекст вызова, передаются вызываемой функции. Метод apply() действует подобно методу call(), за исключением того, что аргументы для функции передаются в виде массива, или объекта, подобного массиву, а не перечисляются через запятую:
func.call( obj, 1, 2, 3 ); func.apply( obj, [1, 2, 3] );
Поддержка браузерами
Метод | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
call() | Да | Да | Да | Да | Да | Да |
JavaScript синтаксис:
// без передачи дополнительных аргументов function.call( thisArg ); // с указанием дополнительных аргументов передаваемых функции function.call( thisArg, arg1, ...argX );
Версия JavaScript
1.3 (ECMAScript 1st Edition)Значения параметров
Параметр | Описание |
---|---|
thisArg | Значение, передаваемое в качестве параметра this целевой функции при вызове связанной функции. Если этот аргумент содержит значение null, то используется глобальный объект. Необязательный параметр. |
args | Ноль или более значений аргументов передаваемых функции. Необязательный параметр. |
Исключения
Тип исключения | Описание |
---|---|
TypeError | Возникает в том случае, если метод вызывается для объекта, не являющегося функцией. |
Пример использования
let obj = { // инициализируем переменную, содержащую объект a: 100, b: 200 }; // функция возвращает сумму трех значений let func = function( c ) { return this.a + this.b + c }; // вызываем функцию как метод объекта func.call( obj, 300 ); // возвращаемое значение 600JavaScript Function