[[prototype]]

Объекты в JavaScript имеют внутреннее свойство, обозначенное в спецификации как [[Prototype]], которое является всего лишь ссылкой на другой объект. Почти у всех объектов при создании это свойство получает не-nullзначение.

Объекты в JavaScript можно организовать в цепочки так, чтобы свойство, не найденное в одном объекте, автоматически искалось бы в другом. Связующим звеном выступает специальное свойство [[Prototype]]

Каждый объект в языке JavaScript имеет второй объект (или null, но значительно реже), ассоциированный с ним. Этот второй объект называется прототипом, и первый объект наследует от прототипа его свойства.


Пример:

var myObject = {
    a: 2
};

myObject.a; // 2

Стандартная операция [[Get]](которая вызывается когда вы ссылаетесь на свойство объекта) сначала проверяет, есть ли у объекта собственное свойство a, если да, то оно используется.
Если стандартная операция [[Get]]не может найти запрашиваемое свойство в самом объекте, то она следует по ссылке [[Prototype]]этого объекта:

var anotherObject = {
    a: 2
};

// создаем объект, привязанный к `anotherObject`
var myObject = Object.create( anotherObject );

myObject.a; // 2

Если быaне нашлось и в объектеanotherObject, то теперь уже его цепочка[[Prototype]]использовалась бы для дальнейшего поиска.

Этот процесс продолжается до тех пор, пока либо не будет найдено свойство с совпадающим именем, либо не закончится цепочка[[Prototype]]. Если по достижении конца цепочки искомое свойство так и не будет найдено, операция[[Get]]вернетundefined.

results matching ""

    No results matching ""