![]() |
|
Библиотека RTFM
Метод. Резюме.
ПримерыПример 1.Эта функция возвращает строку, содержащую форматированное представление чисел с заполнением ведущими нулями.
Следующие операторы вызывают функцию
Пример 2.
Вы можете определить, существует ли функция, сравнивая имя функции с
Пример 3.Здесь создаются обработчики событий
apply
Эта возможность отсутствует спецификации ECMA, соответствующей JavaScript 1.3, но ожидается в следующей её версии. Позволяет применять метод одного объекта в контексте другого объекта (вызывающего объекта). Синтаксисapply(thisArg[, argArray])Параметры
Описание
Вы можете назначить другой объект
Вы можете также использовать Примеры
Вы можете использовать
См. также
arguments
Массив из аргументов, передаваемых функции.
ОписаниеМассив
Вы можете обращаться к аргументам функции внутри функции через использование
массива
Массив
Вы можете использовать массив
Массив
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Свойство |
Описание |
|---|---|
Специфицирует имя функции, которая вызвала выполняемую в данный момент функцию. (Не рекомендуется использовать). | |
Помимо использования в качестве локальной переменной, массив arguments
является также свойством объекта Function
и может иметь перед собой имя функции. Например, если функции myFunc
передаются три аргумента с именами arg1, arg2 и arg3, Вы можете
обращаться к этим аргументам так:
myFunc.arguments[0]
myFunc.arguments[1]
myFunc.arguments[2]
Следующие возможности из JavaScript 1.1 и JavaScript 1.2 были удалены:
arguments.
Например, если функция myFunc
имеет локальную переменную с именем myLocalVar,
Вы можете обратиться к этой переменной: arguments.myLocalVar.arguments.
Например, если функция myFunc имеет два аргумента с именами arg1 и arg2,
Вы можете обратиться к этим аргументам: arguments.arg1 и arguments.arg2. (Вы
можете также обратиться к ним arguments[0] и arguments[1].)Здесь определена функция, соединяющая несколько строк. Единственным формальным аргументом этой функции является строка, специфицирующая символы, разделяющие объединяемые элементы. Функция определяется так:
Function myConcat(separator) {
result="" // инициализация списка
// iterate through arguments
for (var i=1; i<arguments.length; i++) {
result += arguments[i] + separator
}
return result
}
Вы можете передать этой функции любое количество аргументов, и она создаст список, используя каждый аргумент как элемент списка:
// возвращает "red, orange, blue, "
myConcat(", ","red","orange","blue")
// возвращает "elephant; giraffe; lion; cheetah;"
myConcat("; ","elephant","giraffe","lion", "cheetah")
//
возвращает "sage. basil. oregano. pepper. parsley. "
myConcat(". ","sage","basil","oregano", "pepper", "parsley")
Здесь определена функция, создающая HTML-списки. Единственным формальным аргументом этой функции является строка, которая будет "U", если список неупорядоченный (bulleted), или "O", если это упорядоченный/нумерованный список. Функция определяется так:
Function list(type) {
document.write("<" + type + "L>") // начало списка
// итерация по аргументам
for (var i=1; i<arguments.length; i++) {
document.write("<LI>" + arguments[i])
}
document.write("</" + type + "L>") // конец списка
}
Вы можете передать этой функции любое количество аргументов, и она отобразит каждый аргумент как элемент списка указанного типа. Например, этот вызов функции:
list("U", "One", "Two", "Three")
<UL>
<LI>One
<LI>Two
<LI>Three
</UL>
В серверном JavaScript Вы можете отобразить тот же вывод путём вызова функции
write вместо document.write.
Специфицирует тело выполняемой в данный момент функции.
Локальная
переменная | |
JavaScript 1.4: | |
arguments.callee
это свойство локальной переменной arguments,
доступной внутри всех объектов функции; arguments.callee
больше не используется как свойство в Function.
Свойство callee доступно только внутри тела функции.
Ключевое слово this не
ссылается на выполняемую в данный момент функцию. Используйте свойство callee
для обращения к функции внутри тела функции.
Эта функция возвращает значение вызова свойства callee.
Function myFunc() {
return arguments.callee
}
Возвращается следующее значение:
Function myFunc() { return arguments.callee; }
Специфицирует имя функции, которая вызвала выполняемую в данный момент функцию.
|
caller больше не используется.
Свойство caller доступно только внутри тела функции.
Если выполняемая в данный момент функция была вызвана с верхнего уровня
программы JavaScript, caller имеет значение null.
Ключевое слово this не
ссылается на выполняемую в данный момент функцию, поэтому Вы обязаны обращаться
к функциям и к объектам Function по имени, даже в теле функции.
Свойство caller это ссылка на вызывающую функцию, поэтому:
FunctionName.toString.
То есть - декомпилированную каноническую исходную форму функции.
Проверяется значение свойства caller функции:
Function myFunc() {
if (arguments.caller == null) {
return ("Функция была вызвана с верхнего
уровня!")
} else return ("this Function's caller was " + arguments.caller)
}
Специфицирует количество аргументов, передаваемых функции.
Локальная
переменная | |
JavaScript 1.4: | |
arguments.length
это свойство локальной переменной arguments,
доступной внутри всех объектов функции; arguments.length
как свойство в Function больше не используется.
arguments.length
предоставляет несколько аргументов, реально передаваемых функции. По контрасту,
свойство Function.length указывает,
сколько аргументов функция ожидает получить.
Использование >Function.length и arguments.length:
Function addNumbers(x,y){
if (arguments.length == addNumbers.length) {
return (x+y)
}
else return 0
}
Если Вы передаёте этой функции более двух аргументов, она возвращает 0:
result=addNumbers(3,4,5) //
возвращает 0
result=addNumbers(3,4) //
возвращает 7
result=addNumbers(103,104) // возвращает 207
Специфицирует количество аргументов, ожидаемых функцией.
arity
больше не используется и заменена на свойство length.
arity
это внешняя функция, указывающая, сколько аргументов функция ожидает. По
контрасту, arguments.length предоставляет
количество аргументов, реально передаваемых функции.
Использование arity и arguments.length.
Function addNumbers(x,y){
if (arguments.length == addNumbers.length) {
return (x+y)
}
else return 0
}
Если Вы передаёте этой функции более двух аргументов, она возвращает 0:
result=addNumbers(3,4,5) //
возвращает 0
result=addNumbers(3,4) //
возвращает 7
result=addNumbers(103,104) //
возвращает 207
arguments.length,
Function.length.
Этой возможности нет в спецификации ECMA, соответствующей JavaScript 1.3, но ожидается её появление в следующей версии.
Позволяет вызывать (выполнять) метод одного объекта в контексте другого объекта (вызывающего объекта).
call(thisArg[, arg1[, arg2[, ...]]])
thisArg | |
arg1, arg2, ... |
Вы можете назначить другой объект this при вызове существующей функции. this
ссылается на текущий объект, вызывающий объект.
С помощью call Вы
можете написать метод один раз и наследовать его в другом объекте без необходимости переписывать метод для нового объекта.
Можно использовать call для построения цепочки конструкторов объекта, аналогично Java. В следующем
примере конструктор объекта product определён с двумя параметрами, name
и value. Другой объект, prod_dept, инициализирует свою уникальную переменную (dept)
и вызывает конструктор для product в своём конструкторе для инициализации других переменных.
Function product(name, value){
this.name = name;
if(value > 1000)
this.value = 999;
else
this.value = value;
}
Function prod_dept(name, value, dept){
this.dept = dept;
product.call(this, name, value);
}
prod_dept.prototype = new product();
// поскольку 5 меньше 100, значение устанавливается
cheese = new prod_dept("feta", 5, "food");
// поскольку 5000 больше 1000, значение будет 999
car = new prod_dept("honda", 5000, "auto");
Специфицирует функцию, создающую прототип объекта. Заметьте, что значением этого свойства является ссылка на саму функцию, а не строка, содержащая имя функции.
См. Object.constructor.
Специфицирует количество аргументов, ожидаемых функцией.
length
является внешним относительно функции и указывает, сколько аргументов функция
ожидает. По контрасту, arguments.length является локальным относительно функции и предоставляет количество аргументов,
реально передаваемых функции.
См. пример для arguments.length.
Значение, на основе которого создаются экземпляры определённого класса. Каждый
объект, который может быть создан путём вызова функции constructor, имеет
ассоциированное свойство prototype.
Вы можете добавлять новые свойства и методы в существующий класс, добавляя их к
прототипу, ассоциированному с функцией constructor данного класса. Синтаксис добавления нового свойства или метода таков:
fun |
Имя объекта функции |
name | |
value |
Если Вы добавляете свойство к прототипу объекта, все объекты, создаваемые
функцией constructor этого объекта будут иметь это новое свойство, даже если
объекты существовали до создания нового свойства. Например, предположим, мы имеем такие операторы:
var array1 = new Array();
var array2 = new Array(3);
Array.prototype.description=null;
array1.description="Contains some stuff"
array2.description="Contains other stuff"
После того как Вы установили свойство для прототипа, все последующие объекты,
созданные с Array, будут иметь это свойство:
anotherArray=new Array()
anotherArray.description="Currently empty"
В этом примере создаётся метод str_rep
и используется оператор String.prototype.rep = str_rep
для добавления метода ко всем объектам String.
Все объекты, созданные с помощью new String(),
будут иметь этот метод, даже объекты, созданные ранее. Затем создаётся другой
метод и добавляется к одному из объектов String
через использование оператора s1.rep = fake_rep. Метод str_rep
остальных объектов String не изменяется.
var s1 = new String("a")
var s2 = new String("b")
var s3 = new String("c")
// Создаётся метод repeat-string-N-times для всех String-объектов
Function str_rep(n) {
var s = "", t = this.toString()
while (--n >= 0) s += t
return s
}
String.prototype.rep = str_rep
s1a=s1.rep(3) //
возвращает "aaa"
s2a=s2.rep(5) //
возвращает "bbbbb"
s3a=s3.rep(2) // возвращает "cc"
// Создаёт другой метод и назначает его только одной переменной String
Function fake_rep(n) {
return "repeat " + this + " " + n + " times."
}
s1.rep = fake_rep
s1b=s1.rep(1) //
возвращает "repeat a 1 times."
s2b=s2.rep(4) //
возвращает "bbbb"
s3b=s3.rep(6) //
возвращает "cccccc"
Функция из этого примера работает также с объектами String,
не созданными с помощью конструктора String
Следующий код возвращает "zzz".
Эта возможность отсутствует в спецификации ECMA, которая соответствует JavaScript 1.3, но ожидается её появление в следующей версии.
Возвращает строку исходного кода функции.
toSource()Метод toSource возвращает следующие значения:
Function
метод toSource
возвращает следующую строку, означающую, что исходный код недоступен:toSource
возвращает JavaScript-источник, который определяет объект как строку.Этот метод обычно вызывается внутренне в JavaScript, а не явным кодом. Вы
можете вызывать toSource во время отладки для проверки содержимого объекта.
Function.toString,
Object.valueOf.
Возвращает строку исходного кода функции.
toString()Отсутствуют.
Объект Function переопределяет метод toString
объекта Object; он не наследует
Object.toString.
Для объектов Function метод toString
возвращает строку представления объекта.
JavaScript
вызывает метод toString
автоматически при представлении Function
как текстового значения или когда на Function ссылаются при конкатенации строк.
Для объектов Function
встроенный метод toString
декомпилирует функцию обратно в JavaScript-исходник, который определяет функцию.
Эта строка содержит ключевое слово Function, список аргументов, фигурные скобки и тело функции.
Например, предположим, у нас есть следующий код, определяющий тип объекта Dog
и создающий theDog, объект типа Dog:
Function Dog(name,breed,color,sex) {
this.name=name
this.breed=breed
this.color=color
this.sex=sex
}
theDog = new Dog("Gabby","Lab","chocolate","girl")
В любое время, когда Dog
используется в строковом контексте, JavaScript автоматически вызывает функцию toString,
которая возвращает следующие строки:
Function Dog(name, breed, color, sex) { this.name = name; this.breed =
breed; this.color = color; this.sex = sex; }
Возвращает строку исходного кода функции.
valueOf()
Метод valueOf возвращает следующие значения:
Function
метод valueOf возвращает следующую строку, означающую, что исходный код недоступен:toSource
возвращает исходный код JavaScript, который определяет объект как строку. Этот метод эквивалентен методу toString
функции.Этот метод обычно вызывается внутренне в JavaScript, а не явным кодом.
Function.toString,
Object.valueOf.
Copyright © 2000 Netscape Communications Corp. Все права зарезервированы.
Дата последнего обновления: 28 сентября 2000 г.
Сайт принадлежит группе Luksian group