1. Определение метода
Метод вызова:
Синтаксис: Call ([thisObj [, arg1 [, arg2 [, [, .argn]]]]])
Определение: вызовите метод объекта, чтобы заменить текущий объект другим объектом.
иллюстрировать:
Метод вызова может использоваться для вызова метода вместо другого объекта. Метод вызова изменяет контекст объекта функции из исходного контекста на новый объект, указанный ThisOBJ.
Если этот параметр не предоставлен, глобальный объект используется в качестве ThisOBJ.
Применить метод:
Синтаксис: применить ([thisobj [, argarray]])
Определение: примените один метод определенного объекта и замените текущий объект другим объектом.
иллюстрировать:
Если Argarray не является допустимым массивом или не является объектом аргументов, будет сгенерирован TypeError.
Если аргументы не будут предоставлены, глобальный объект будет использоваться в качестве этого, и не может быть принят какие -либо аргументы.
2. Общие примеры
а
Кода -копия выглядит следующим образом:
Функция добавить (a, b)
{
блюд (A+B);
}
Функция sub (a, b)
{
предупреждение (ab);
}
add.call (sub, 3,1);
Значение в этом примере состоит в том, чтобы заменить sub с помощью Add, add.call (sub, 3,1) == Добавить (3,1), поэтому результат выполнения: alert (4); // Примечание. Функция в JS на самом деле является объектом, и имя функции является ссылкой на объект функции.
беременный
Кода -копия выглядит следующим образом:
Функция Animal () {
this.name = "животное";
this.showname = function () {
оповещение (this.name);
}
}
Функция cat () {
this.name = "cat";
}
var Animal = New Animal ();
var cat = new Cat ();
// Через метод вызова или применения метод showmeame (), изначально принадлежащий объекту животного, передается объектному коте для использования.
// входной результат - "Кошка"
Animal.showname.call (Cat, ",");
//animal.showname.apply (cat, []);
Вызов означает размещение метода животных на кошку для выполнения. Оказывается, что у кошки нет метода showememe (). Теперь, поместив метод Animal Showmeame () на CAT для выполнения, так что это имя должно быть CAT
в Осознавать наследование
Кода -копия выглядит следующим образом:
Функция животного (имя) {
this.name = name;
this.showname = function () {
оповещение (this.name);
}
}
Функция кошка (имя) {
Animal.call (это, имя);
}
var cat = new Cat ("Черная кошка");
Cat.showname ();
Animal.call (это) означает использование объекта животного вместо этого объекта. Тогда не будет все свойства и методы животных в кошке? Объект CAT может напрямую вызывать методы и свойства животных.
дюймовый Множественное наследство
Кода -копия выглядит следующим образом:
Функция class10 ()
{
this.showsub = function (a, b)
{
предупреждение (ab);
}
}
Функция class11 ()
{
this.showadd = функция (a, b)
{
блюд (A+B);
}
}
Функция класса2 ()
{
Class10.call (это);
Class11.call (это);
}
Это очень просто, используя два вызова для достижения множественного наследства
Конечно, существуют другие методы для наследования JS, такие как использование прототипов цепочек, которые не попадают в объем этой статьи, но только объясняет использование вызова здесь. Говоря о вызове, конечно, также применяется. Эти два метода в основном означают одно и то же. Разница в том, что второй параметр вызова может быть любого типа, в то время как второй параметр применения должен быть массивом или аргументами
И Callee, вызывающий абонент ..