Object.__proto__

Object.__proto__ - властивість __proto__ об'єкта Object.prototype є властивістю доступу (комбінацією геттера і сетера), які розширюють внутрішній прототип [[Prototype]] об'єкта (який є об'єктом або null), через який здійснювався доступ.

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

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

Властивість __proto__ також може використовуватися при визначенні литерала об'єкта, встановлюючи прототип [[Prototype]] об'єкта при його створенні. Цей спосіб може розглядатися як альтернатива методу 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