прототипы javascript и наследование [дубликат]

Sep 09 2020

Мой вопрос: Object является последним в цепочке прототипов, все объекты наследуют свойства и методы от него, как он наследует методы от Function.prototype, почему Object.__proto__ === Function.prototype// true, почему Object.__proto__не null.

Ответы

ScottMarcus Sep 09 2020 at 20:27

Фундаментальный код Objectв JavaScript должен иметь возможность для его создания, поэтому он требует, чтобы prototypeобъект помогал в таких строках:

let myObj = new Object();

И поэтому Object.__proto__нет null.

FunctionОбъект представляет собой особый тип объекта , который облегчает объект экземпляр с помощью конструкторы и когда используется этот способ известен как «конструктор функция». Таким образом, имеет смысл Objectунаследовать от Functionобъекта, чтобы можно было создавать экземпляры объекта.

Geuis Sep 09 2020 at 20:28

Функция - это тоже объект. Так что он тоже наследуется от Object.

Но пусть вас не смущает Object.__proto__. Это то, что добавляет браузер и на самом деле не является частью языка. Так что не полагайтесь на это и не используйте это.

По сути, Function.prototypeесть Object.__proto__.