В Ecmascript v3 эти два метода определены для прототипа функции. Функции этих двух методов одинаковы: использование этих двух методов может вызывать функции, такие как вызов других методов объекта. Это предложение было скопировано из книги, по крайней мере, я не понял, что это значит.
Давайте поговорим о простых и легких для понимания. Давайте сначала посмотрим на код:
Кода -копия выглядит следующим образом:
Введение функции (имя, возраст)
{
Document.Write («Мое имя»+имя+». I Am Am»+возраст);
}
var p = new People ();
ВВЕДЕНИЕ.CALL (P, "Windking", 20);
Давайте поговорим о приведенном выше коде. После использования вызова введение становится методом p. Интересно, понимаете ли вы это? Используя метод вызова, приведенный выше код эквивалентен этому коду:
Кода -копия выглядит следующим образом:
Функция людей (имя, возраст)
{
this.name = name;
this.age = возраст;
this.introduce = function () {
Document.Write («Мое имя»+имя+». I Am Am»+возраст);
};
}
Вы понимаете смысл? Применить ту же функцию.
Хорошо, независимо от того, что этот метод можно использовать на практике, давайте сначала поговорим о грамматике.
Вызов принимает хотя бы один параметр. Первый параметр вызова относится к необходимому вам объекту. Например, в примере выше, метод введения надеется, что он может быть вызван объектом P, поэтому P используется в качестве первого параметра вызова. Остальное количество параметров является произвольным, и он используется в качестве параметра метода введения. Заказ находится в заказе, объявленном параметром введения. Например, введите.call (p, «Винтовая», 20), если ввести является примером метода P, то это то, что это значит: p.introduce («Винтынг», 20). Вы понимаете? Помните, что порядок входящих параметров должен соответствовать параметрам объявления функции.
После понимания вызова метод применения легко понять. Единственная разница между применением и вызовом заключается в том, что вызов принимает как минимум один параметр, в то время как применение принимает только два параметра. Первый параметр такой же, как и вызов, а второй параметр - это набор с подписками. Например, введение. Call (P, «Windking», 20) может быть переписано во введение. Apply (P, [«Windking», 20]). Вы понимаете на этот раз?
Так каково использование этих двух методов? Если мы просто хотим реализовать вышеуказанную функцию, разве не лучше реализовать введение как люди?
Я суммирую приложение на два:
1. Метод обмена. Сначала посмотрим на код:
Кода -копия выглядит следующим образом:
Введение функции (имя, возраст)
{
Document.Write («Мое имя»+имя+». I Am Am»+возраст);
}
Это метод самостоятельного введения. Теперь допустим, что у нас есть класс мальчика и класс девочки (я просто за демонстрацию здесь, на практике будет использоваться родительский класс народа), потому что их введение одинаково, поэтому мы можем поделиться этим методом.
Кода -копия выглядит следующим образом:
Функциональный мальчик ()
{
this.boyintroduce = function () {
ВВЕДЕНИЕ.call (это, имя, возраст);
};
}
Точно так же то же самое относится и к девушке, поэтому мы можем избежать написания кода. На самом деле, это немного надуманно, потому что мы можем написать это как:
Кода -копия выглядит следующим образом:
Функциональный мальчик ()
{
this.boyintroduce = function () {
Введение (имя, возраст);
}
}
Но в настоящее время, если мы используем применить, это будет выглядеть намного проще:
Кода -копия выглядит следующим образом:
Функциональный мальчик ()
{
this.boyintroduce = function () {
ВВЕДЕНИЕ.apply (это, аргументы);
};
}
Разве это не намного проще? Если есть много параметров, то вам не нужно писать такую серию плотных параметров!
2. Cross-Domain Call
См. Простой пример (только для демонстрации, без значения):
Кода -копия выглядит следующим образом:
Функциональный мальчик (имя, возраст)
{
this.boyintroduce = function () {
Document.Write («Мое имя»+имя+». I Am Am»+возраст);
}
}
Функция девушка (имя, возраст)
{
}
Это мальчик и класс девочек, а затем мы пишем следующий код:
var b = новый мальчик ("Вингинг", 20);
B.boyIntroduce ();
Нет никаких возражений против этого. Предположим, есть девушка, которая хочет представиться однажды и просто использовать ее случайно, тогда мне нет необходимости изменять класс девушки, потому что другие девушки застенчивы и не любят представлять себя. Тогда я могу сделать это в настоящее время.
var g = new Girl ("Xuan", 22);
ВВЕДЕНИЕ.call (g, "Xuan", 22);
3. Настоящее использование - наследование
Ладно, все вышеупомянутые - маленькие уловки, и это не место элегантности. Ниже приведен наиболее широко используемый вызов и применение, которое используется для структурного наследования.