Сообщение от almac
|
2. Зачем задавать конструктор для прототипа при ПЕРЕзаписи прототипа?
Пример:
|
Потому что присоздании каждой функции в её свойстве prototype автоматически создается прототип пустышка, предполагая что эту функцию будут использовать как конструктор.
Он выглядит так
function Cat(){};
Cat.prototype =
{constructor:Cat}
ну так сделано чтобы в созданных обьектах была ссылка на конструктор который их создал, и если мы перезаписываем этот прототип ЦЕЛИКОМ (а не просто добавлем в него что-то) то нужно и замутить вот это свойство constructor вручную.
Только один ньюанс, когда оно создавалось автоматчиески оно было скрытым и немеречисляемым при
for in ? а когда мы его создаем вручную , то создается обычное перечисляемое свойство, и это геморно слегка.