Представьте себе простую функцию:
function Person();
Я знаю, что Person
имеет свойство __proto__
, которое ссылается на Function.prototype.
Я также знаю, что Person
имеет свойство prototype
. Когда я пишу: function Person() {}
, автоматически создается новый объект-прототип:
Person.prototype = { constructor: Person };
но внутри блока Person.prototype у меня тоже есть __proto__
, так что же это за __proto__
, когда он создан, кто его создает?
Я могу знать, что это прототип Object
, но всегда ли так?
Function.prototype
, и все экземпляры объектов, созданные этими конструкторами, имеют цепочки прототипов, раскрывающиеся доObject.prototype
. - person Patrick Roberts   schedule 12.07.2019__proto__
является псевдо-свойством (технически это геттер/сеттер дляObject.prototype
), раскрывающим внутренний объект[[Prototype]]
. Таким образом, даже{}
(пустой объект) имеет свойство__proto__
... - person FZs   schedule 19.01.2021