Ключевые слова: аргументы, вызываемый абонент, вызывающий абонент.
аргументы: представляют параметры, переданные в функцию
вызываемый: оператор, представляющий функции и тела функций.
вызывающий: представляет функцию, которая вызывает функцию
аргументы
Этот объект представляет выполняемую функцию и параметры функции, которая ее вызывает.
звонящий
Возвращает ссылку на функцию, вызвавшую текущую функцию.
имя_функции.вызывающий
Объект functionName — это имя выполняемой функции.
иллюстрировать
Для функций атрибут вызывающего объекта определяется только при выполнении функции. Если функция вызывается с верхнего уровня, то вызывающая сторона содержит значение null. Если атрибут вызывающего объекта используется в строковом контексте, результат тот же, что и functionName.toString, то есть отображается декомпилированный текст функции.
вызываемый абонент
Возвращает выполняемый объект Function, который является телом указанного объекта Function.
[функция.]arguments.callee
Необязательный параметр функции — это имя объекта Function, который выполняется в данный момент.
иллюстрировать
Начальное значение атрибута вызываемого объекта — это выполняемый объект Function.
Атрибут callee является членом объекта аргументов. Он представляет собой ссылку на сам объект функции, что полезно для рекурсии анонимных функций или для обеспечения инкапсуляции функций. Например, в следующем примере рекурсивно вычисляется сумма натуральных чисел. числа от 1 до n. Это свойство доступно только при выполнении соответствующей функции. Следует также отметить, что у вызываемого объекта есть атрибут длины, который иногда удобнее проверять. аргументы.длина — это фактическая длина параметра, а аргументы.callee.длина — это длина формального параметра. Отсюда вы можете определить, соответствует ли длина формального параметра фактической длине параметра при вызове.
Скопируйте код кода следующим образом:
<тип сценария='текст/javascript'>
функциональный тест (x, y, z)
{
alert("Фактическая длина параметра:"+arguments.length);
alert("Длина формального параметра:"+arguments.callee.length);
alert("Длина формального параметра:"+test.length);
предупреждение(аргументы[0])
alert(test[ 0 ]) // undef не имеет такого использования
}
//тест(1,2,3);
тест(1,2,3,4);
/*
* аргументы не являются массивом (класс Array)
*/
Array.prototype.selfvalue = 1;
функция testAguments() {
alert( " аргументы.selfvalue = " + аргументы.selfvalue);
}
alert("Array.sefvalue="+new Array().selfvalue);
тестАгументы();
/**/ /*
* Демонстрирует атрибут вызывающего абонента функции.
* Описание: (текущая функция).caller: возвращает ссылку на функцию, вызвавшую текущую функцию.
*/
функция callerDemo() {
если (callerDemo.caller) {
var a = callerDemo.caller.arguments[0];
предупреждение(а);
} еще {
alert("это топовая функция");
}
}
функция handleCaller() {
вызывающийДемо();
}
вызывающийДемо();
handleCaller("Параметр 1", "Параметр 2");
/**/ /*
* Демонстрирует атрибут вызываемой функции.
* Описание: аргументы.callee: начальное значение — это выполняемый объект Function, используемый для анонимных функций.
*/
функция calleeDemo() {
оповещение(arguments.callee);
}
вызываемыйДемо();
(function(arg0,arg1){alert("Количество фигур: "+arguments.callee.length))})();
/**/ /*
* Демонстрация использования функций Apply и Call.
* Примечание. Функция предназначена для привязки функции к другому объекту для запуска. Единственная разница между ними заключается в способе определения параметров:
* применить(thisArg,argArray);
* call(thisArg[,arg1,arg2…] ]);
* То есть указателю this внутри всех функций будет присвоен thisArg
*/
функцияОбъектА() {
alert("Выполнить ObjectA()");
предупреждение(аргументы[0]);
это .hit = функция (msg) {alert(msg)}
this .info = "Я из ObjectA"
}
функцияОбъектБ() {
alert("Выполнить ObjectB()");
// Вызов метода ObjectA(), и все это в конструкторе ObjectA будет заменено этим в ObjectB.
ObjectA.apply(this,arguments); // ObjectA.call(this);
предупреждение (этот .info);
}
ObjectB('Параметр 0');
var value = "глобальная переменная";
функция Объект() {
this .value = "Объект!";
}
функция Fun1() {
предупреждение (это .значение);
}
Веселье1();
Fun1.apply(окно);
Fun1.apply(новый объект());
</скрипт>