Методы javascript call и apply
Методы call
и apply
позволяют нам определить контекст (this
или, другими словами, конкретный объект) внутри вызываемой функции. Единственное отличие между двумя методами в следующем: первый параметр для обоих методов – объект (this
в функции); для call
в качестве остальных параметров передаются параметры вызываемой функции, а apply
ожидает в качестве второго параметра получить массив, который содержит параметры вызываемой функции.
В этом примере у нас есть несколько объектов, все объекты имеют свойство x
, но с различными значениями. Когда мы вызываем функцию 'напрямую' this
это глобальный объект (window
), поэтому будет использоваться значение глобальной переменной x
. Когда мы используем call
, мы можем точно определить объект посредством первого параметра, затем перечисляем параметры вызываемой функции и ссылаемся внутри функции, через this
, на переданный объект. Мы можем сделать тоже самое при помощи метода apply
. Но вторым параметром будет массив, состоящий из параметров вызываемой функции.
javascript
var x, o1, o2, r1, r2, r3;
x = 4;
o1 = {x: 2};
o2 = {x: 7};
f = function(m, n) {return m * n * this.x;};
r1 = f(3, 1); // 12
r2 = f.call(o1,3, 1); // 6
r3 = f.apply(o2,[3, 1]); // 21
Комментарии к статье
нахуй и похуй бля нахуй, один пример бля ваще не очем - пошли все нахуй и в пизду