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