Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / JavaScript /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Примитивные встроенные объекты - Программирование от RIN.RU
Примитивные встроенные объекты



Функции: объект Function


Объект 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


Синтаксис: функция.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


Синтаксис: функция.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(объект[,массив]?)
Аргументы: объект - любое объектное выражение массив - массив аргументов функции
Результат: определяется функцией

Метод 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(объект[,аргументы]?)
Аргументы: объект - любое объектное выражение аргументы - список аргументов функции через запятую
Результат: определяется функцией

Метод 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()
Результат: строковое значение

Метод 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; }.


<<<  НазадВперед  >>>
 1  2  3  4  5  6 


 8  Комментарии к статье  8 8  Обсудить в чате

8  В тему

Основные понятия

Типы данных

Выражения и операции

Регулярные выражения

Операторы и функции

Использование объектов

Строки: встроенный объект String

Массивы: встроенный объект Array

Дата и время: встроенный объект Date

Встроенные объекты Error, Math и RegExp

Дополнительные возможности JScript

Исполняющая система JScript

Исполняющая система JScript (продолжение)

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь