Каждая функция содержит два свойства: длина и прототип
Длина: количество именованных параметров, которые текущая функция хочет принять
Прототип: это реальный способ сохранить всю свою силу
Кода -копия выглядит следующим образом:
Функция говорит name (имя) {
оповещение (имя);
}
Функция sum (num1, num2) {
вернуть num1 + num2;
}
функция sayshi () {
оповещение ("Привет");
}
Alert (sayname.length); // 1 Количество параметров
Alert (sum.length); // 2 Количество параметров: 2
Alert (sayhi.length); // 0 Нет параметров
Каждая функция содержит два неэнергетических метода: Apply () и Call ()
Оба метода вызывают функции в определенной области, что на самом деле равно установлению значения этого объекта в корпусе функции
Сначала Apply () принимает два параметра: один - это область применения функции, работающей, а другой - массив параметров (может быть экземпляр массива или объект аргумента)
Кода -копия выглядит следующим образом:
Функция sum (num1, num2) {
вернуть num1 + num2;
}
функция Callsum1 (num1, num2) {
Возврат sum.apply (это, аргументы); // пройти в объект аргументов
}
function ullsum2 (num1, num2) {
return sum.apply (это, [num1, num2]);
}
оповещение (Callsum1 (10, 10)); // 20
оповещение (Callsum2 (10, 20)); // 30
Во -вторых, первый параметр метода вызова не изменился. Что меняет, так это то, что другие параметры передаются параметрам, а параметры, передаваемые функции, должны быть перечислены один за другим.
Кода -копия выглядит следующим образом:
Функция sum (num1, num2) {
вернуть num1 + num2;
}
функция вызовов (num1, num2) {
return sum.call (this, num1, num2);
}
предупреждение (Callsum (10, 200));
Что касается того, какой метод более удобен, он полностью зависит от ваших желаний. Если параметров нет, это будет таким же, как и в использовании.
Тем не менее, внешний вид применения и методов вызова определенно не только для удаления параметров корпуса.
Их реальное использование заключается в сфере областей, от которой зависят функции расширения.
Кода -копия выглядит следующим образом:
window.color = "red";
var o = {color: "blue"};
Функция showercolor () {
предупреждение (this.color);
}
saycolor (); // красный
saycolor.call (это); // красный
saycolor.call (window); // красный
saycolor.call (o); // синий
Самым большим преимуществом использования применения и вызова для расширения объема является то, что нет необходимости иметь какие -либо отношения связи с методом.
Ecmascript5 также определяет метод: bind (). Этот метод создает экземпляр функции, значение которой будет связано с значением, передаваемым к функции связывания
Кода -копия выглядит следующим образом:
window.color = "red";
var o = {color: "blue"};
Функция showercolor () {
предупреждение (this.color);
}
var bindfun = saycolor.bind (o);
bindfun (); // синий
Выше приведено в этой статье, я надеюсь, что вам это может понравиться.