Оба конструктора при запуске имеют this
, который является новым создаваемым экземпляром. Таким образом, строки
this.text = text;
и
this.code = code;
оба помещают свойство непосредственно в экземпляр.
Вы можете увидеть это, если отметите hasOwnProperty
:
class Message {
constructor(text) {
this.text = text;
}
toString() {
return this.text;
}
}
class ErrorMessage extends Message {
constructor(text, code) {
super(text);
this.code = code;
}
}
const m = new ErrorMessage();
console.log(
m.hasOwnProperty('text'),
m.hasOwnProperty('code')
);
toString
- это обычный метод для Message.prototype
. Это означает, что экземпляр (при условии, что вы создаете ErrorMessage
) наследует это свойство через ErrorMessage.prototype
, поскольку он наследует от Message.prototype
. Внутренняя цепочка прототипов:
instance <- ErrorMessage.prototype <- Message.prototype <- Object.prototype