Object.__proto__

Object.__proto__ - посилання на внутрішній прототип об'єкта.

Синтаксис:

object.__proto__

Параметри:

object - об'єкт якому потрібно задати прототип.

Опис:

__proto__ властивість об'єкта яка містить посилання на prototype. Об'єкт або функція успадковують всі методи і властивості нового прототипу разом з усіма методами і властивостями в ланцюжку прототипів нового прототипу.Об'єкт може мати тільки один прототип (не включаючи успадковані прототипи в ланцюжку прототипів).

Використання властивості __proto__ викликає суперечки і багатьох воно розчарувало. Раніше вона ніколи не включалася в специфікацію EcmaScript, але сучасні браузери все одно вирішили його реалізувати.

Сьогодні властивість __proto__ стандартизовано в специфікації ECMAScript 6 і буде підтримуватися в майбутньому. Проте, зміна прототипу об'єкта все ще залишається повільної операцією, яку слід уникати, якщо ви турбуєтеся про продуктивність.

Властивість __proto__ також може використовуватися при визначенні літерала об'єкта, встановлюючи прототип об'єкта при його створенні. Цей спосіб може розглядатися як альтернатива методу Object.create().

Приклад:

var noProto = Object.create( null); noProto.__proto__ = 17 ; alert(noProto.__proto__ ); // 17 //функція яка використовується як конструктор function Employee () {/ * инициализируем екземпляр * /} // Створюємо новий екземпляр Employee var fred = new Employee (); // Перевірка на еквівалентність alert(fred.__proto__ === Employee.prototype); // true

Наслідування об'єкту за допомогою __proto__ :

var ob1={a:1,b:2}; var ob2={}; ob2.__proto__=ob1; //наслідуємо ob1 ob2.x=5; alert(ob2.a);