Объект Function это прототип функциональных объектов. Он может
быть создан двумя способами:
function имя(аргументы?) {
операторы
}
var имя = new Function ([аргументы,]? операторы)
Здесь имя имя функции, аргументы необязательный список
формальных аргументов функции через запятую, операторы операторы, образующие
тело функции.
Первый вариант это декларация функции, описанная
ранее. Сама по себе декларация функции не создает функционального объекта; его создание происходит
в момент вызова этой функции. Второй вариант это вызов конструктора объекта Function,
при котором функциональный объект создается явно. В этом случае и аргументы, и операторы
должны быть текстовыми строками.
Например, для создания функции, возвращающей сумму двух аргументов, можно использовать следующие
два варианта:
function sum(a, b) {
return a + b;
}
var sum = new Function("a", "b", "return a + b");
В обоих случаях вызов функции sum осуществляется оператором типа sum(3, 5).
Свойства объекта Function
| Свойство |
Описание |
Член прототипа |
| arguments |
Локальный объект, описывающий вызов функции. |
Да |
| caller |
Имя функции, вызвавшей данную функцию. |
Да |
| constructor |
Конструктор, который создал объект. |
Да |
| length |
Количество формальных аргументов функции. |
Нет |
| prototype |
Ссылка на прототип класса объектов. |
Нет |
Методы объекта Function
| Метод |
Описание |
Член прототипа |
| apply |
Применяет метод одного объекта к другому. |
Да |
| call |
Вызывает метод одного объекта из другого. |
Да |
| toString |
Преобразует функцию в строку. |
Да |
| valueOf |
Возвращает примитивное значение объекта. |
Да |
Синтаксис: функция.caller
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства caller является ссылка на функцию, вызвавшую данную функцию.
Если данная функция была вызвана с верхнего уровня сценария, то его значение null.
Если это свойство используется в контексте, предполагающем его преобразование в строку, то результатом
будет функция.caller.toString(),
т. е. текст декларации вызвавшей функции. Пример: следующий сценарий
function sum(a, b) {
document.write(sum.caller); // автоматическое преобразование в строку
return a + b;
}
function test() {
return sum(1, 2);
}
test();
выведет на экран обозревателя строку function test() { return sum(1,
2); }.
Синтаксис: функция.length
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства length является количество формальных аргументов функции,
т. е. количество аргументов, указанных в ее декларации. Количество фактических аргументов
определяется в момент вызова функции и содержится в свойстве функция.arguments.length.
Пример: следующий сценарий
function sum(a, b) {
document.write(sum.length);
return a + b;
}
var x = sum(1, 2);
выведет на экран обозревателя число 2.
Синтаксис: функция.apply(объект[,массив]?)
Аргументы: объект любое объектное выражение
массив массив аргументов функции
Результат: определяется функцией
Метод apply применяет метод одного объекта в контексте другого объекта. Точнее
говоря, он вызывает функцию, задавая в качестве this
указатель на объект, а в качестве фактических аргументов элементы массива.
Если объект равен null или undefined, то значением
this является глобальный объект.
Если массив не указан, равен null или undefined,
то функция вызывается без аргументов.
Этот метод удобен для создания цепочек конструкторов. Допустим, что мы написали конструктор
объекта goods (товар) с двумя свойствами name (название) и price
(цена). Теперь мы хотим написать конструктор объекта sales (продажи), который содержит
объект goods и дополнительное свойство volume (объем продаж). С помощью метода
apply это делается так:
function goods(name, price) {
this.name = name;
this.price = price;
}
function sales(name, price, volume) {
this.volume = volume;
goods.apply(this, arguments);
}
var meal = new sales("мука", 30, 700)
document.write("Выручка: ", meal.name, " - ", meal.price * meal.volume, " руб.");
Этот сценарий выведет на экран обозревателя строку Выручка: мука - 21000 руб.
Ср. описание метода call.
Синтаксис: функция.call(объект[,аргументы]?)
Аргументы: объект любое объектное выражение
аргументы список аргументов функции через запятую
Результат: определяется функцией
Метод call вызывает метод одного объекта в контексте другого объекта. Точнее
говоря, он вызывает функцию, задавая в качестве this
указатель на объект, а в качестве фактических аргументов аргументы.
Если объект равен null или undefined, то значением
this является глобальный объект.
Если аргументы не указаны, то функция вызывается без аргументов.
Этот метод удобен для создания цепочек конструкторов. Перепишем предыдущий пример с использованием
метода call:
function goods(name, price) {
this.name = name;
this.price = price;
}
function sales(name, price, volume) {
this.volume = volume;
goods.call(this, name, price);
}
var meal = new sales("мука", 30, 700)
document.write("Выручка: ", meal.name, " - ", meal.price * meal.volume, " руб.");
Ср. описание метода apply.
Синтаксис: функция.toString()
Результат: строковое значение
Метод toString преобразует функцию в строковое значение. Результатом
является строка, содержащая текст декларации вызвавшей функции. Пример: следующий сценарий
function sum(a, b) {
document.write(sum.toString());
return a + b;
}
var x = sum(1, 2);
выведет на экран обозревателя строку function sum(a, b) { document.write(sum.toString());
return a + b; }.
Объект Boolean это объектная реализация примитивного булевского
значения. Его конструктор имеет вид:
new Boolean(значение?)
Здесь значение любое логическое выражение, задающее примитивное значение
объекта. Если оно не указано, то примитивное значение объекта равно false.
Свойства объекта Boolean
| Свойство |
Описание |
Член прототипа |
| constructor |
Конструктор, который создал объект. |
Да |
| prototype |
Ссылка на прототип класса объектов. |
Нет |
Методы объекта Boolean
| Метод |
Описание |
Член прототипа |
| toString |
Преобразует объект в строку. |
Да |
| valueOf |
Возвращает примитивное значение объекта. |
Да |
Синтаксис: объект.toString()
Результат: строковое значение
Метод toString преобразует логический объект в строковое значение.
Если примитивное значение объекта равно true, то он возвращает строку "true",
в противном случае строку "false".
Синтаксис: объект.valueOf()
Результат: логическое значение
Метод valueOf возвращает примитивное значение логического объекта.
Объект Number это объектная реализация примитивного числового
значения. Его конструктор имеет вид:
new Number(значение?)
Здесь значение любое числовое выражение, задающее примитивное значение
объекта. Если оно не задано, то примитивное значение объекта равно +0.
Свойства объекта Number
| Свойство |
Описание |
Член прототипа |
| constructor |
Конструктор, который создал объект. |
Да |
| MAX_VALUE |
Наибольшее положительное значение числового типа. |
Да |
| MIN_VALUE |
Наименьшее положительное значение числового типа. |
Да |
| NaN |
Специальное значение "не число". |
Да |
| NEGATIVE_INFINITY |
Специальное значение "отрицательная бесконечность". |
Да |
| POSITIVE_INFINITY |
Специальное значение "положительная бесконечность". |
Да |
| prototype |
Ссылка на прототип класса объектов. |
Нет |
Методы объекта Number
| Метод |
Описание |
Член прототипа |
| toExponential |
Преобразует примитивное значение объекта в строку, содержащую число в экспоненциальной
форме. |
Да |
| toFixed |
Преобразует примитивное значение объекта в строку, содержащую число с фиксированной
запятой. |
Да |
| toLocaleString |
Преобразует примитивное значение объекта в строку в формате операционной системы. |
Да |
| toPrecision |
Преобразует примитивное значение объекта в строку, содержащую число с заданным количеством
значимых цифр. |
Да |
| toString |
Преобразует примитивное значение объекта в строку. |
Да |
| valueOf |
Возвращает примитивное значение объекта. |
Да |
Синтаксис: Number.MAX_VALUE
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства MAX_VALUE является наибольшее положительное значение числового
типа, которое приблизительно равно 1.7976931348623157E+308. Числа, большие этого значения, трактуются
как Infinity.
Это статическое свойство объекта Number, поэтому для доступа к нему не нужно
специально создавать числовой объект.
Синтаксис: Number.MIN_VALUE
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства MIN_VALUE является наибольшее положительное значение числового
типа, которое приблизительно равно 5E-324. Числа, меньшие этого значения, преобразуются в 0.
Это статическое свойство объекта Number, поэтому для доступа к нему не нужно
специально создавать числовой объект.
Синтаксис: Number.NaN
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства NaN является значение NaN (Not a Number, "не
число"). Это значение не совпадает ни с одним числом, включая себя, поэтому мы не можем
проверить правильность числа, сравнивая его с NaN. Вместо этого нужно использовать
методы isFinite и isNaN.
Это статическое свойство объекта Number, поэтому для доступа к нему не нужно
специально создавать числовой объект.
Синтаксис: Number.NEGATIVE_INFINITY
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства NEGATIVE_INFINITY является число, меньшее чем -Number.MIN_VALUE.
Это значение обозначает отрицательную бесконечность и меньше любого числа, включая его само.
В частности, результат умножения любого числа на NEGATIVE_INFINITY равен NEGATIVE_INFINITY,
а результат деления любого числа на NEGATIVE_INFINITY равен 0.
Это статическое свойство объекта Number, поэтому для доступа к нему не нужно
специально создавать числовой объект.
Синтаксис: Number.POSITIVE_INFINITY
Атрибуты: { DontEnum, DontDelete, ReadOnly }
Значением свойства POSITIVE_INFINITY является число, большее чем Number.MAX_VALUE.
Это значение обозначает положительную бесконечность и больше любого числа, включая его само.
В частности, результат умножения любого числа на POSITIVE_INFINITY равен POSITIVE_INFINITY,
а результат деления любого числа на POSITIVE_INFINITY равен 0.
Это статическое свойство объекта Number, поэтому для доступа к нему не нужно
специально создавать числовой объект.
Синтаксис: объект.toExponential(число)
Аргументы: число числовое выражение от 0 до 20 включительно
Результат: строковое значение
Метод toExponential возвращает строку, содержащую экспоненциальную форму значения
объекта. Эта строка содержит одну цифру перед десятичной запятой и заданное число
цифр после запятой. Если аргумент число не определен, то число цифр определяется по
правилам, приведенным в п. 3.2.3.
Например, оператор document.write(Math.PI.toExponential(4)) выведет на экран обозревателя
текст 3.1416e+0.
Синтаксис: объект.toFixed(число)
Аргументы: число числовое выражение от 0 до 20 включительно
Результат: строковое значение
Метод toFixed возвращает строку, содержащую значение объекта в форме
с фиксированной запятой. Эта строка содержит заданное число цифр после запятой. Если
аргумент число не определен, то он принимается равным нулю.
Например, оператор document.write(Math.PI.toFixed(4)) выведет на экран обозревателя
текст 3.1416.
Синтаксис: объект.toLocaleString()
Результат: строковое значение
Метод toLocaleString преобразует числовой объект в строковое значение
по правилам, приведенным в п. 3.2.3. При этом учитывается формат
операционной системы, т. е. символ десятичной запятой и разделитель между тысячами.
Синтаксис: объект.toPrecision(число)
Аргументы: число числовое выражение от 1 до 21 включительно
Результат: строковое значение
Метод toPrecision возвращает строку, содержащую значение объекта
с заданной точностью. Точнее говоря, эта строка содержит:
- либо число в экспоненциальной форме с одной цифрой перед десятичной запятой и число
- 1 цифр после запятой;
- либо число с фиксированной запятой, состоящее из число значащих цифр.
Если аргумент число не определен, то возвращается результат метода toString.
Например, оператор document.write(Math.PI.toPrecision(4)) выведет на экран обозревателя
текст 3.142.
Синтаксис: объект.toString(основание?)
Аргументы: основание любое числовое выражение
Результат: строковое значение
Метод toString преобразует числовой объект в строковое значение по
правилам, приведенным в п. 3.2.3.
Необязательный аргумент основание задает основание системы счисления и должен иметь
значение, больше или равное 2. Если он не задан, то считается равным 10. Метод toString
преобразует число в строку в данной системе счисления. При этом в системах счисления с основанием,
большим 10, цифры, большие девяти, задаются латинскими буквами (A = 10, B = 11,
, Z =
35). Формат чисел для оснований, больших 36, не определен.
Синтаксис: объект.valueOf()
Результат: числовое значение
Метод valueOf возвращает примитивное значение числового объекта.