Требуется ли изменить прототип.конструктор подкласса в классическом наследовании

Я просматривал следующую статью в Mozilla JS Guide.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/create#Examples

В примере, приведенном для классического наследования с Object.create, я не могу понять, почему автор добавил следующую строку (строка № 21):

Rectangle.prototype.constructor = Rectangle;

Требуется ли это для классического наследования? Пожалуйста, обоснуйте свой ответ.


person shahalpk    schedule 15.09.2013    source источник


Ответы (1)


Начиная с ECMAScript-262 Edition 5.1, свойство конструктора задается только для объектов-функций, см. 13.2 Создание объектов-функций (шаг 17).

Он никогда не читается и не используется самим языком.

Особенно,

obj instanceof C

не использует свойство конструктора и не

C.prototype.isPrototypeOf(obj)

Поэтому, если вы не создаете его и не используете фреймворк, который его использует, вы можете игнорировать свойство конструктора.

Дополнительную информацию см. в разделе Что происходит со свойством "конструктор".

person Wolfgang Kuehn    schedule 15.09.2013