Prototype
Представляет прототип для данного класса. Вы можете использовать прототип для добавления свойств и методов во все экземпляры класса. О прототипах см. .
Свойство из
Реализовано в
ECMA-262
Представляет прототип данного класса. Вы можете использовать этот прототип для добавления свойств или методов во все экземпляры класса. О прототипах см. .
Свойство из
JavaScript 1.1, NES 2.0
Значение, на основе которого создаются экземпляры определённого класса. Каждый объект, который может быть создан путём вызова функции constructor, имеет ассоциированное свойство prototype.
Свойство из
Реализован в
Версия ECMA
Описание
Вы можете добавлять новые свойства и методы в существующий класс, добавляя их к прототипу, ассоциированному с функцией constructor данного класса. Синтаксис добавления нового свойства или метода таков:
fun.prototype.name = value
где
fun |
Имя объекта функции constructor, который Вы хотите изменить.
name
Начальное значение нового свойства или метода .
Если Вы добавляете свойство к прототипу объекта, все объекты, создаваемые функцией 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">
Представляет прототип для данного класса. вы можете использовать этот прототип для добавления свойств или методов всем экземплярам данного класса. о прототипах см. .
Свойство из
Реализован в
Версия ECMA
Представляет прототип для данного класса. Вы можете использовать этот прототип для добавления свойств или методов всем экземплярам класса. См. также .
Свойство из
JavaScript 1.1
ECMA-262
Представляет прототип для данного класса. Вы можете использовать прототип для добавления свойств всем экземплярам класса. О прототипах см. .
Свойство из
Представляет прототип для данного класса. Вы можете использовать prototype для добавления свойств и методов во все экземпляры класса. О прототипах см. .
Свойство из
JavaScript 1.1, NES 3.0
ECMA-262