Этой возможности нет в спецификации ECMA, соответствующей JavaScript 1.3, но ожидается её появление в следующей версии.
Позволяет вызывать (выполнять) метод одного объекта в контексте другого объекта (вызывающего объекта).
Метод из
Реализован в
JavaScript 1.3
call(thisArg[, arg1[, arg2[, ...]]])
thisArg |
Параметр вызывающего объекта.
arg1, arg2, ...
Параметр объекта.
Вы можете назначить другой объект this при вызове существующей функции. this ссылается на текущий объект, вызывающий объект.
С помощью call Вы можете написать метод один раз и наследовать его в другом объекте без необходимости переписывать метод для нового объекта.
Можно использовать call для построения цепочки конструкторов объекта, аналогично Java. В следующем примере конструктор объекта product определён с двумя параметрами, name
и value. Другой объект, prod_dept, инициализирует свою уникальную переменную (dept) и вызывает конструктор для product в своём конструкторе для инициализации других переменных.
Function product(name, value){
this.name = name;
if(value > 1000)
this.value = 999;
else
this.value = value;
}
Function prod_dept(name, value, dept){
this.dept = dept;
product.call(this, name, value);
}
prod_dept.prototype = new product();
// поскольку 5 меньше 100, значение устанавливается
cheese = new prod_dept("feta", 5, "food");
// поскольку 5000 больше 1000, значение будет 999
car = new prod_dept("honda", 5000, "auto");
.