F.prototype
Как мы помним, новые объекты могут быть созданы с помощью функции-конструктора new F().
Если в F.prototype содержится объект, оператор new устанавливает его в качестве [[Prototype]] для нового объекта.
💥 На заметку: JavaScript использовал прототипное наследование с момента своего появления. Это одна из основных особенностей языка.
Но раньше, в старые времена, прямого доступа к прототипу объекта не было. Надёжно работало только свойство "prototype" функции-конструктора, описанное в этой главе. Поэтому оно используется во многих скриптах.
- Свойство
F.prototype(не путать с[[Prototype]]) устанавливает[[Prototype]]для новых объектов при вызовеnew F(). - Значение
F.prototypeдолжно быть либо объектом, либоnull. Другие значения не будут работать. - Свойство
"prototype"является особым, только когда оно назначено функции-конструктору, которая вызывается операторомnew.
В обычных объектах prototype не является чем-то особенным:
let user = {
name: "John",
prototype: "Bla-bla" // никакой магии нет - обычное свойство
};
По умолчанию все функции имеют F.prototype = { constructor: F }, поэтому мы можем получить конструктор объекта через свойство "constructor".
🚀 Источник: https://learn.javascript.ru/function-prototype