Исходя из фона Java, Javascript — это новый мир, который я пытаюсь понять.
Я как бы борюсь с тем, как именно работает прототипное наследование.
Что я получил от __proto__ VS. прототип в JavaScript и других источниках был полезен, но я действительно хочу убедиться, что понимаю эту тему. Верны ли следующие утверждения?
__proto__
, свойство объектов, представляет собой объект, представляющий прототип объекта. Этот объект, в свою очередь, также может иметь свойство __proto__
, пока не будет достигнут объект Object, конец цепочки.
prototype
является свойством функционального объекта и самим объектом. Когда объект создается из функции с использованием ключевого слова new
, __proto__
этого нового экземпляра будет свойством prototype
функции-конструктора. Например:
let random = new Array();
console.log(random.__proto__); //logs the object which is the prototype of random
console.log(Array.prototype); //logs the same object as random.__proto__
console.log(random.__proto__.__proto__); // logs the Object prototype object
console.log(Object.prototype); // logs the same object as random.__proto__.__proto__
Также, когда объекты проверяются друг с другом на равенство, они являются одним и тем же объектом в следующем коде:
console.log(random.__proto__ === Array.prototype); // logs true
console.log(random.__proto__.__proto__ === Object.prototype ); // logs true
Поскольку объекты проверяются на равенство по ссылке, означает ли это, что на самом деле существует один экземпляр объекта Object.prototype
и что все объекты __proto__
ссылаются на этот экземпляр?
Заранее спасибо.
Object.prototype
— это конец строки. - person Scott Marcus   schedule 13.09.2017