Прежде чем ссылаться на приведенную выше концепцию, сначала захотите поговорить о скрытых параметрах функции в функции в JavaScript: аргументы
Аргументы
Этот объект представляет параметры функции, которая выполняется, и вызывает ее функцию.
[Функция.] Аргументы [n]
Функция параметров: параметры. Имя объекта функции в настоящее время выполняется. N: Варианты. Чтобы перенести индекс значения параметра от 0 к объекту функции.
иллюстрировать
Аргументы представляют собой скрытый объект, созданный в дополнение к указанным параметрам при вызове функции. Аргументы -это объект, похожий на массив, но не массив. имеет длину атрибута массива. Существует также параметр, который объект аргументов сохраняет функцию, которая фактически передается функции, не ограничиваясь списком параметров, определенным функциональным оператором, и не может быть явно создан для создания объекта аргументов. Объект аргументов может быть доступен только в начале функции. В следующем примере подробно объясняется эти свойства:
Код кода копирования следующим образом:
// Использование объекта объекта.
Функция 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 += "/n/n"
For (i = 0; i <numargs; i ++) {// Получить содержание параметра.
s + = "arg" + i + "=" + аргументы [i] + "/n";
}
Возврат (s);
}
Вот код, который объясняет, что аргументы не являются массивом (класс массива):
Код кода копирования следующим образом:
Array.Prototype.SetValue = 1;
оповещение (new Array (). SelfValue);
Функциональные тесты () {
Предупреждение (Arguments.elfvalue);
}
Вы найдете первый дисплей оповещения 1, что означает, что у объекта массива есть атрибут Selfvalue со значением 1. Когда вы называете функцию Testagumens, вы обнаружите, что «неопределенное» показывает, что это не атрибут аргументов, что аргументы, что аргументы, что аргументы. является атрибутом аргументов, то есть аргументы не являются объектом массива.
Вызывающий абонент
Возвращает ссылку на функцию, которая вызывает текущую функцию.
FunctionName.caller
Объект FunctionName - это имя функции выполнения.
иллюстрировать
Для функций атрибут абонента определяется только при выполнении функции. Если функция вызывается из верхнего слоя, то вызывающий абонент содержит NULL. Если атрибут Caller используется в контексте строки, результат такой же, как и functionName.tstring, то есть он показывает текст компиляции функции.
Следующий пример иллюстрирует использование атрибута вызывающего абонента:
Код кода копирования следующим образом:
// демонстрация вызывающего абонента {
функция 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)
Возврат 0;
еще
Возврат n + arguments.callee (n -1)
}
Больше общих функций рекурсии:
Код кода копирования следующим образом:
var sum = function (n) {
if (n <= 0)
Возврат 0;
еще
Возврат n + sum (n-1);
}
Во время призвания: оповещение (сумма (100));
Среди них функция содержит ссылку на саму сумму.
применить и позвонить
Их роль заключается в том, чтобы связать функцию с другим объектом.
применить (thisarg, argarray);
звонок (thisarg [, arg1, arg2 ...]);
То есть все это этот указатель внутри функции будет назначен этим, что может достичь цели выполнения функции в качестве другого объекта.
Применить описание
Если Argarray не является эффективным массивом или не является объектом аргументов, это вызовет Typerror.
Без каких -либо параметров Argarray и ThisArg глобальный объект будет использоваться как ThisArg,
И не может быть передано по каким -либо параметрам.
Описание звонка
Метод вызова может изменить контекст объекта функции из начального контекста на новый объект, указанный ThisARG.
Если не предоставлены параметры этого AARG, то глобальный объект используется в качестве ThisARG
Связанные навыки:
В применении вызовов и применения есть еще один метод, то есть после использования другой функции (класса) с вызовом и применением, текущая функция (класс) имеет другой метод (класс) или атрибут. "наследование". Посмотрите на следующий пример:
Код кода копирования следующим образом:
// наследственная демонстрация
Функция base () {
this.member = "dnnnsun_member";
this.method = function () {
Window.alert (this.member);
}
}
функция expedition () {) {
base.call (это);
Window.alert (член);
Window.alert (this.method);
}
Приведенные выше примеры можно увидеть, что после вызова расширение может наследовать метод и атрибуты базы.
Кстати, используйте Apply для создания определенной модели в пропроре JavaScript Framework.
Фактически, текущий код выглядит следующим образом:
Код кода копирования следующим образом:
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 = new Vene ("moto");
moto.showself ();