Атрибут prototype

Атрибут prototype объекта определяет объект, от которого наследуются свойства.

Важно понимать, что когда в программном коде встречается ссылка prototype, она обозначает обычное свойство объекта, а не атрибут pro­totype.

Атрибут prototype устанавливается в момент создания объекта.

  • Для объектов, созданных с помощью литералов, прототипом является Object.prototype.
  • Прототипом объекта, созданного с помощью оператора new, является значение свойства prototype конструктора.
  • Прототипом объекта, созданного с помощью Object.create(), становится первый аргумент этой функции (который может иметь значение null).

Стандартом ECMAScript 5 предусматривается возможность определить прототип любого объекта, если передать его методу Object.getPrototypeOf().

Чтобы определить, является ли один объект прототипом (или звеном в цепочке прототипов) другого объекта, следует использовать метод isPrototypeOf(). Чтобы узнать, является ли p прототипом o, нужно записать выражение p.isPrototypeOf(o).

Например:

var p = {x:1}; // Оп­ре­де­лить объ­ект-про­то­тип.
var o = Object.create(p); // Соз­дать объ­ект с этим про­то­ти­пом.

p.isPrototypeOf(o) // => true: o на­сле­ду­ет p
Object.prototype.isPrototypeOf(p) // => true: p на­сле­ду­ет Object.prototype

P.S: В реализации JavaScript компании Mozilla (первоначально созданной в Netscape) значение атрибута prototypeдоступно через специальное свойство __proto__, которое можно использовать напрямую для определения и установки прототипа любого объекта. Использование свойства __proto__ ухудшает переносимость: оно отсутствует в реализациях броузеров IE или Opera, хотя в настоящее время оно поддерживается броузерами Safari и Chrome. Версии Firefox, реализующие стандарт ECMAScript 5, все еще поддерживают свойство __proto__, но не позволяют изменять прототип нерасширяемых объектов.

results matching ""

    No results matching ""