Прежде чем ссылаться на приведенную выше концепцию, сначала захотите поговорить о скрытых параметрах функции в функции в JavaScript:
Аргументы
Аргументы представляют собой параметры, которые выполняются, и функцию вызова ее функции. [Функция.] Аргументы [n] параметр
Функция: параметры. Имя объекта функции в настоящее время выполняется.
N: Варианты. Чтобы перенести индекс значения параметра от 0 к объекту функции. Он показывает, что Argumeents представляет собой скрытый объект, созданный в дополнение к указанному параметру при вызове функции. Аргументы -это объект, похожий на массив, но не массив. имеет длину атрибута массива. Существует также параметр, который объект аргументов сохраняет функцию, которая фактически передается функции, не ограничиваясь списком параметров, определенным функциональным оператором, и не может быть явно создан для создания объекта аргументов. Объект аргументов может быть доступен только в начале функции.
В следующем примере подробно объясняется эти свойства
Код кода копирования следующим образом:
// Использование объекта аргументов
Функция argTest (a, b) {{
var i, s = "ожидаемое функцию Argtest";
var numargs = arguments.length;
Var expargs = argTest.length;
if (expargs <2)
s + = expargs + "аргумент.";
еще
s + = expargs + "аргументы." ;;
if (Numargs <2)
S + = Numargs + "был пройден.";
еще
s + = Numargs + "Мы прошли.";
s += ""
For (i = 0; i <numargs; i ++) {// Получить содержание параметра.
s + = "arg" + i + "=" + аргументы + "" "";
}
Возврат (s);
}
Вот код, который объясняет, что аргументы не являются массивом (класс массива):
Код кода копирования следующим образом:
Array.Prototype.SetValue = 1;
оповещение (new Array (). SelfValue);
Функциональные тесты () {
Предупреждение (Arguments.elfvalue);
}
Вы найдете первый дисплей оповещения 1, что означает, что у объекта массива есть атрибут Selfvalue со значением 1. Когда вы называете функцию Testagumens, вы обнаружите, что «неопределенное» показывает, что это не атрибут аргументов, что аргументы, что аргументы, что аргументы. является атрибутом аргументов, то есть аргументы не являются объектом массива.
Добавить простой способ добавления здесь: alert (Arguments Extance for Array);
Alert (Arguments Extance Of Object);
Вызывающий абонент
Возвращает ссылку на функцию, которая вызывает текущую функцию.
FunctionName.caller
Объект FunctionName - это имя функции выполнения.
иллюстрировать
Для функций атрибут абонента определяется только при выполнении функции. Если функция вызывается из верхнего слоя, то вызывающий абонент содержит NULL. Если атрибут Caller используется в контексте строки, результат такой же, как и functionName.tstring, то есть показывает, что отображается функция функции.
Примечание: function.toString () может реализовать антикормипиляционную функцию функции.
Следующий пример иллюстрирует использование атрибута вызывающего абонента:
Код кода копирования следующим образом:
// демонстрация вызывающего абонента {
функция calldemo () {
if (callerdemo.caller) {
var a = callerdemo.caller.tostring ();
предупреждение (а);
} Еще {
Оповещение («Это верхняя функция»);
}
}
функция handlecaller () {
Callerdemo ();
}
Калле
Возвращает текст функционального объекта, который выполняется, текст указанного функционального объекта. [Function.] Arguments.callee Необязательный параметр - это имя функционального объекта, выполняемого в настоящее время. Объясните, что начальное значение атрибута Callee - это объект функции, который выполняется. Атрибут Callee является членом объекта аргументов, который указывает ссылку на сам объект функции, который способствует рекурсивности анонимной функции или упаковки функции. Этот атрибут доступен только при выполнении функции корреляции. Следует отметить, что Callee имеет атрибут длины. Arguments.Length - это твердое параметр и аргументы. Калле.
Примерный пример
Код кода копирования следующим образом:
// Callee может печатать себя
Функция wallemo () {
Предупреждение (Arguments.callee);
}
// используется для проверки параметров
Функция CalleelLengthDemo (arg1, arg2) {{{
if (arguments.length == arguments.callee.length) {
Window.alert («Проверка женьшеня и длины сплошного параметра верна!»);
Возвращаться;
} Еще {
Alert («Длина сплошного параметра:» +arguments.length);
Alert ("" »Проницаемая форма: +Arguments.callee.length);
}
}
// рекурсивный расчет
var sum = function (n) {
if (n <= 0)
Возврат 1;
еще
Возврат n + arguments.callee (n -1)
} По сравнению с общими рекурсивными функциями: var sum = function (n) {
if (1 == n) возврат 1;
Иначе вернуть n + sum (n-1);
}
Во время призвания: оповещение (сумма (100));
Среди них функция содержит ссылку на саму сумму.
применить и позвонить
Их роль заключается в том, чтобы связать функцию с другим объектом.
применить (thisarg, argarray);
звонок (thisarg [, arg1, arg2 ...]);
То есть этот указатель внутри всех функций будет назначен на это, что может реализовать цель цели использования функции в качестве другого метода метода.
Если какой -либо параметр Argarray и ThisARG не предоставлен, глобальный объект будет использоваться в качестве ThisARG и не может быть передан по каким -либо параметрам. Метод вызова вызова может изменить контекст объекта функции из начального контекста на новый объект, указанный ThisArg.
Если вы не предоставляете параметр ThisARG, то глобальный объект используется в качестве метода, связанной с этим AARG: после применения вызова и применения в нем есть еще одна техника. Текущая функция (класс).
Посмотрите на следующий пример:
Код кода копирования следующим образом:
// наследственная демонстрация
Функция base () {
this.member = "dnnnsun_member";
this.method = function () {
Window.alert (this.member);
}
}
функция expedition () {) {
base.call (это);
Window.alert (член);
Window.alert (this.method);
}
Приведенные выше примеры можно увидеть, что после вызова расширение может наследовать метод и атрибуты базы. Кстати, используйте применить для создания модели определения в прототипе Framework JavaScript.
Код кода копирования следующим образом:
var class = {
Create: function () {
Return function () {
this.initialize.apply (это, аргументы);
}
}
}
Анализ: из кода объект содержит только один метод: создать, что возвращает функцию, то есть класс. Но это также конструктор класса, где называется инициализация, и этот метод является функцией инициализации, определенной во время создания класса. По этому пути можно реализовать примеры схемы создания класса в прототипе:
Код кода копирования следующим образом:
var транспортное средство = class.create ();
exant.prototype = {
инициализировать: function (type) {
this.type = type;
}
Show Self: function () {{)
Оповещение («это само собой»+ this.Type);
}
} Var moto = новый автомобиль ("moto");
moto.showself ();