Прототипи при обектите

Всеки JavaScript обект има прототип. Прототипът също е обект – както почти всичко ;).

Прототипите при JavaScript

Всички обекти наследяват свойствата и методите, които са притежание на техният прототип. Обектите, създадени с помощта на object literal, или с new Object() наследяват прототип, наречен Object.prototype. Обектите, създадени с функцията new Date() наследяват Date.prototype. Object.prototype е на върха на веригата от прототипи (prototype chain). Всички JavaScript обекти (Date, Array, RegExp, Function, …) наследяват Object.prototype.

Създаване на прототип

Стандартният начин да се създаде един прототип нададен обект е като се използва функцията конструктор:

С функцията конструктор, може да използваме ключова дума new за създаване на нов обект от същия прототип:

Опитайте сами »

Бележка: Счита се за добра практика функциите, които са конструктор да се именуват с първа главна буква.

Добавяне на свойства и методи към обекти

Понякога искаме да добавим нови свойства (или методи) към съществуващ обект. Понякога искаме да добавим нови свойства (или методи) на всички съществуващи обекти от даден тип. Понякога пък искаме да добавим нови свойства (или методи) на обектът прототип.

Добавяне на свойство към обект

Опитайте сами »

Свойството ще бъде добавено към инстанциата на обекта за myFather. Не към myMother и не към коя да е друга инстанция на същият обект.

Добавяне на метод към обект

Добавяне на нов метод за съществуващ обект също е лесно:

Опитайте сами »

Методът ще бъде добавен към myFather а не към myMother.

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

Не можете да добавите ново свойство за някой прототип по същия начин както добавихме по-горе ново свойство за съществуващ обект, тъй като прототипът не е съществуващ обект.

Опитайте сами »

За да добавите ново свойство трябва да го добавите към функцията конструктор:

Опитайте сами »

Свойствата на прототипа могат да имат стойности (стойности по подразбиране).

Добавяне на методи към прототип

Конструктор функцията може също така да дефинира и методи. Добавянето на методи към обект се извършва вътре във функцията конструктор.

Опитайте сами »

Функцията changeName() задава стойността от name за свойството lastName.

Опитайте сами »

JavaScript знае за кого говорим, като „замества“ ключовата дума this с myMother.

Използване на свойството prototype

Свойството prototype ни позволява да добавяме нови свойства към съществуващ прототип:

Опитайте сами »

Свойството prototype също ни позволява да добавяме нови методи към вече съществуващ прототип:

Опитайте сами »

Бележка: променяме само нашите собствени прототипи :). Никога не променяме прототипи на стандартни JavaScript обекти.

Вижте още