Я учусь Javascript, и недавно я немного узнал о прототипах. Я понимаю, что прототипы - это буквально объекты в памяти, на которые каждый вновь созданный объект имеет указатель. Когда создается новый объект, функция конструктора, используемая для создания этого объекта, назначает прототип вновь созданного объекта в качестве прототипа функции конструктора. Другими словами, если у меня есть функция конструктора Circle и я создаю новый объект Circle, этот новый объект и функция конструктора Circle оба указывают на одну и ту же ссылку.
Мой вопрос таков: если предполагается, что прототипы ссылаются на «родительский» объект, который создал объект, такой как функция конструктора, почему функции конструктора, которые являются функциями и, следовательно, объектами, не указывают на « Функция «конструктор» как их прототип? Если вы попытаетесь создать новый конструктор следующим образом:
function Circle() {}
let c1 = new Circle();
Вы увидите, что c1 имеет в качестве прототипа следующее, что имеет смысл, поскольку конструктор Circle создал его
Circle {}
__proto__:
constructor: ƒ Circle()
__proto__: Object
и Circle.prototype
- это тот же объект, что и выше. Так почему же Circle.prototype
не указывает на Function
в качестве прототипа?