В рамках функции есть два специальных свойства: аргументы и это. Аргументы - это массив объект класса, который содержит все параметры, передаваемые.
Но этот объект также имеет свойство, называемое Callee, которое является указателем на функцию, которая владеет объектом аргументов.
Пожалуйста, смотрите пример классической фактической функции:
Кода -копия выглядит следующим образом:
Функция факториала (num) {
if (num <= 1) {
возврат 1;
} еще {
вернуть num * факториал (num - 1);
}
}
Функция факториала (num) {
if (num <= 1) {
возврат 1;
} еще {
вернуть num * arguments.callee (num - 1);
}
}
Нет ничего плохого в использовании первого метода, но связь слишком высока и не очень хорошая. После того, как имя функции изменилось, внутреннее имя функции также должно быть изменено.
Второй метод - это низкая связь, независимо от того, как изменяется имя функции, он не повлияет на выполнение функции.
Это относится к объекту среды, на котором выполняется функция, или также можно сказать, что это это значение.
Кода -копия выглядит следующим образом:
window.color = "red";
var o = {color: "blue"};
Функция showercolor () {
предупреждение (this.color);
}
saycolor (); // красный
o.saycolor = saycolor;
O.SayColor (); // Синий
Атрибут Caller содержит ссылку на функцию, которая вызывает текущую функцию. Если текущая функция вызвана в глобальном объеме, ее значение равна нулю
Кода -копия выглядит следующим образом:
Функция Outter () {
Innter ();
}
функция inner () {
//alert(innter.caller) ;// Связь слишком высока
Alert (Arguments.callee.caller);
}
внешний ();
Выше всего содержимое внутренних свойств функций JavaScript. Надеюсь, тебе это понравится