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
Chrome
Firefox
Firefox
Opera
Opera
Safari
Safari
Internet Explorer
IExplorer
Microsoft Edge
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 ); // возвращаемое значение 600
JavaScript Function