Все объекты в javascript наследуют от Object, и потому имеют свойство prototype.
Как правило, свойство prototype используется для предоставления базового набора функциональных возможностей классу объектов. Новые экземпляры объекта "наследуют" поведение прототипа, присвоенного этому объекту.
Предположим, что нам требуется добавить в объект Array метод, который возвращает значение наибольшего элемента массива. Для этого объявляется функция, которая добавляется к объекту Array.prototype, а затем используется.
Пример: Добавляем метод объектам Array
function array_max( ){
var i, max = this[0];
for (i = 1; i < this.length; i++) {
if (max < this[i])
max = this[i];
}
return max;
}
Array.prototype.max = array_max;
// а теперь создадим новый массив
// и запустим новый метод
var x = [ 1, 2, 3, 4, 5, 6]
var y = x.max( );
Автор: Questioner, дата: 7 марта, 2012 - 13:47
#permalinkВ obj.prototype как получить не все экземпляры этого класса, а конкретный экземпляр, используемый юзером сейчас?
Автор: Гость (не зарегистрирован), дата: 12 июня, 2012 - 19:15
#permalinkПо-моему в код опечатка или ошибка
function array_max( ){ var i, max = this[0]; for (i = 1; i < this.length; i++) { if (max < this[i]) max = this[i]; } return max; } Array.prototype.max = array_max<strong>()</strong>; // а теперь создадим новый массив // и запустим новый метод var x = [ 1, 2, 3, 4, 5, 6] var y = x.max( );Автор: Гость (не зарегистрирован), дата: 17 декабря, 2012 - 17:25
#permalinkРебята, читайте спецификацию, а не такие вот "руководства":
"... объекты могут создаваться различными способами, в том числе – посредством буквенного обозначения или с помощью конструкторов, которые создают объекты и выполняют код, инициализирующий их полностью или частично путем присвоения их свойствам начальных значений. Каждый конструктор является функцией, которая обладает свойством “prototype”, используемым для реализации прототипного наследования и разделяемых свойств".
У объекта Javascript (не путать с функцией Object()) нет свойства prototype! Есть неявное свойство, которое ссылается на constructor.prototype. Таким образом, prototype можно задать только для конструктора объекта, но не для самого объекта.
Автор: haos2100, дата: 1 марта, 2013 - 10:00
#permalinkВидимо я не до конца понял работу свойства prototype, подскажите пожалуйста где ошибка. Вот мой код:
var ivan = {
im: "Иван",
}
ivan.prototype.say_name = function(name)
{
this.name = name;
alert("Привет, меня зовут "+this.name);
}
ivan.say_name(ivan.im);
Автор: isxaker (не зарегистрирован), дата: 18 июня, 2014 - 09:24
#permalinkСкажи пожалуйста, в чем разница
function foo(a){ this.a = a; } a.prototype.getA = function(){return this.a;}AND
function foo(a){ this.a = a; this.getA = function(){return this.a;} }Автор: axmed2004, дата: 2 ноября, 2014 - 13:08
#permalinkпочему не работает такая конструкция?
Array.prototype.fn={ in_array:function(el){ a=0 for(i=0;i<this.length;i++){ if(this[i]==el) a++ } return a>0 } } a=["a","b","c"] document.write(a.fn.in_array("b"))