АМ
Size: a a a
АМ
АМ
IK
AL
AL
АМ
wo
.prototype
где лежит неперечислимый конструктор дефолтный.Object.getOwnPropertyDescriptor(Rabbit.prototype, 'constructor')
IK
.prototype
где лежит неперечислимый конструктор дефолтный.Object.getOwnPropertyDescriptor(Rabbit.prototype, 'constructor')
IK
DS
wo
new Rabbit → constructor → super()
То есть, наличие конструктора у Rabbit оно не отменяет. IK
IK
IK
wo
constructorперезаписываемо, просто — это не противоречие, а дополнение.
Rabbit.prototype.constructor
Т.е. это именно его мы спрашиваем тут:Object.getOwnPropertyDescriptor(Rabbit.prototype, 'constructor')и возвращается с остальными дополнениями в целом :
{Ведь в противном случае вернулся бы
configurable: true
enumerable: false
writable: true
value ...
}
undefined!
.constructor
есть и у Rabbit.prorotype
и у class Rabbit
, несмотря на то, что его явно не определяли )extend
, что это свойство необходимо в наличии..constructor
у Rabbit
должно являться свойство конструктора от Animal
. Именно это позволяет ключевому слову super()вообще работать.
Object.getPrototypeOf(Rabbit) === Animal // true...
Rabbit.prototype.constructor === Animal.prototype.constructor // falseТо есть, конструкторы наследуются по цепочке прототипов, но поле
.constructor
у Rabbit своё собственное, а не достаётся из Animal.NK
DD
M
ES