var result = fun.call(thisArg[, arg1[, arg2[, ...]]])
Аргументы
thisArg
Задает значение this внутри функции. Если thisArg - null или undefined, то это будет глобальный объект. В ином случае, this будет равно Object(thisArg) (то есть thisArg, если thisArg уже объект, или String, Boolean или Number, если thisArg - примитивное значение соответствующего типа). Таким образом, при выполнении функции всегда соблюдается условие typeof this == 'object'.
arg1, arg2 ..
Аргументов, с которыми будет вызвана функция.
Описание, примеры
Метод call может применяться для вызова функции в контексте нужного объекта:
Пример: Вызов sayName в контексте разных объектов
Выделить все
var Animal1 = {name: 'Cat'}var Animal2 = {name: 'Dog'}function sayName(){// this — ссылка на объект, в контексте которого вызвана функцияalert(this.name);
}
sayName.call(Animal1)// выдаст сообщение "Cat"
sayName.call(Animal2)// выдаст сообщение "Dog"
При этом совершенно не важно, какому объекту принадлежит функция. В качестве текущего(this) объекта будет взят первый аргумент.
Пример:
Выделить все
var Animal1 = {name: 'Cat',
sayName: function(){alert(this.name);
}};
var Animal2 = {name: 'Dog'};
Animal1.sayName()// выдаст сообщение "Cat"
Animal1.sayName.call(Animal2)// выдаст сообщение "Dog"
Помимо смены контекста вызова, метод call может передавать в функцию аргументы:
Пример:
Выделить все
var obj = {attr: 10};
function sum(a, b){alert(this.attr + a + b);
}
sum.call(obj, 5, 2)// выдаст сообщение с результатом "17"
Если контекст вызова не указан, то функция будет выполнятся в контексте объекта window: