Главное, что я хочу решить следующие проблемы:
1. В чем разница между применением и вызовом
2. Другое умное применение применения (обычно при применении, при каких обстоятельствах можно применять)
Сначала я нашел определения применения и вызова из Интернета, а затем использовал примеры, чтобы объяснить значение этих двух методов и того, как их использовать.
Применить: метод может угнать метод другого объекта и наследовать свойства другого объекта.
Метод function.apply (obj, args) может получить два параметра
OBJ: Этот объект заменит этот объект в классе функции
ARGS: Это массив, он будет принят как аргумент для функционирования (Args-> аргументы)
Вызов: означает то же самое, что и применить, но список параметров отличается.
Function.call (obj, param1, param2,…, paramn)
OBJ: Этот объект заменит этот объект в классе функции
Парамы: это список параметров
Применить пример:
<script type = "text/javascript">/*определить человеческий человек*/функция (имя, возраст) {this.name = name; this.age = age;} /*определить класс ученика* /functionStudent (имя, возраст, класс) {person.apply (это, аргументы); this.grade = grade;} // Создать ученик класса var student = new Student ("Qian", 21, "Первый класс"); // Тест Alert ("name:"+student.name+"/n"+"Возраст:"+студент+"/n"+". Почему эти два атрибута имеют значения? Это магия применения. </Script>Анализ: Person.Apply (это, аргументы);
Это: при создании объекта он представляет студента
Аргументы: это массив, то есть ["Qian", "21", "Первый класс"];
Другими словами, с точки зрения непрофессионала: используйте студента, чтобы выполнить содержимое класса человека. Существуют такие утверждения, как это.
Пример вызови
В функции Studen вы можете изменить применить к следующему:
Person.call (это, имя, возраст);
разница
При предоставлении параметров объекта, если форма параметра представляет собой массив, например, аргументы параметров передаются в примере применения, этот параметр является типом массива, а при вызове человека список параметров соответствует одинаковому (то есть первые два цифры человека и список параметров студента согласуется), вы можете использовать применение. Если список параметров моего человека похож на этот (возраст, имя), а список параметров студента (имя, возраст, класс), это может быть достигнуто путем вызова, то есть непосредственно указав позицию соответствующего значения списка параметров (person.call (это, возраст, имя, класс));
Некоторые другие умные применения применения
Осторожные люди могли заметить, что когда я вызываю метод применения, первым параметром является объект (это), а второй параметр - это сбор массива.
Призывая человека, ему нужно не массив, но почему он дает мне массив, я все еще могу проанализировать массив в один параметр,
Это умное использование применения. Вы можете преобразовать массив в список параметров по умолчанию ([Param1, param2, param3] в Param1, param2, param3). Если мы используем программу для реализации реализации замены каждого элемента в массиве списком параметров, это может занять некоторое время. С помощью этой функции применения у нас есть следующий эффективный метод:
а) Math.max может достичь крупнейшего предмета в массиве
Поскольку параметр math.max не поддерживает math.max ([param1, param2]), то есть массив
Тем не менее, он поддерживает Math.max (param1, param2, param3 ...), поэтому вы можете решить проблему var max = math.max.apply (null, массив) на основе функции применения прямо сейчас, чтобы вы могли легко получить самый большой элемент в массиве.
(Применить заменить сборку массива одним параметром и передать его методу за другим)
Когда эта часть называется, первым параметрам дается нуль. Это потому, что нет объекта, чтобы назвать этот метод. Мне просто нужно использовать этот метод, чтобы помочь мне рассчитать и получить возвращенный результат. Так что я прямо прошел ноль
б) математика. Мин может достичь наименьшего предмета в массиве
Кроме того, это то же самое, что и макс
var min = math.min.apply (null, массив);
c) Array.prototype.push может реализовать комбинацию двух массивов
Метод push не обеспечивает массив, но он обеспечивает push (param1, param,… paramn), поэтому вы также можете установить и заменить массив, применяя, то есть:
vararr1 = новый массив ("1", "2", "3"); vararr2 = new Array ("4", "5", "6"); Array.prototype.push.apply (arr1, arr2);Это также может быть понято таким образом, ARR1 вызывает метод push, и параметры заменяются путем применения сборки массива в набор списков параметров.
Выше приведено полное понимание ключевого входного вызова, который редактор приносит вам. Я надеюсь, что каждый сможет поддержать wulin.com ~