Ядро JavaScript 1.5. Справочник

Prototype


Представляет прототип для данного класса. Вы можете использовать прототип для добавления свойств и методов во все экземпляры класса. О прототипах см. .

Свойство из

Реализовано вJavaScript 1.1, NES 2.0

Версия ECMA

ECMA-262


Представляет прототип данного класса. Вы можете использовать этот прототип для добавления свойств или методов во все экземпляры класса. О прототипах см. .

Свойство из Реализовано в

JavaScript 1.1, NES 2.0Версия ECMA

ECMA-262






Значение, на основе которого создаются экземпляры определённого класса. Каждый объект, который может быть создан путём вызова функции constructor, имеет ассоциированное свойство prototype.

Свойство из

Реализован вJavaScript 1.1, NES 2.0

Версия ECMAECMA-262

Описание

Вы можете добавлять новые свойства и методы в существующий класс, добавляя их к прототипу, ассоциированному с функцией constructor данного класса. Синтаксис добавления нового свойства или метода таков:

fun.prototype.name = value

где

 

fun

Имя объекта функции constructor, который Вы хотите изменить.

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 для добавления метода ко всем объектам . Все объекты, созданные с помощью new String(), будут иметь этот метод, даже объекты, созданные ранее. Затем создаётся другой метод и добавляется к одному из объектов через использование оператора s1.rep = fake_rep. Метод str_rep

остальных объектов не изменяется.

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"

Функция из этого примера работает также с объектами , не созданными с помощью конструктора Следующий код возвращает "zzz".

"z".rep(3)

toSource">




Представляет прототип для данного класса. вы можете использовать этот прототип для добавления свойств или методов всем экземплярам данного класса. о прототипах см. .

Свойство из

Реализован вJavaScript 1.1, NES 2.0

Версия ECMAECMA-262




Представляет прототип для данного класса. Вы можете использовать этот прототип для добавления свойств или методов всем экземплярам класса. См. также .

Свойство из Реализовано в

JavaScript 1.1Версия ECMA

ECMA-262




Представляет прототип для данного класса. Вы можете использовать прототип для добавления свойств всем экземплярам класса. О прототипах см. .

Свойство из Реализовано в

JavaScript 1.1, NES 2.0Версия ECMA

ECMA-262




Представляет прототип для данного класса. Вы можете использовать prototype для добавления свойств и методов во все экземпляры класса. О прототипах см. .

Свойство из Реализовано в

JavaScript 1.1, NES 3.0Версия ECMA

ECMA-262



Содержание раздела