Erolast,
По-моему, эту строчку можно вообще опустить, она ничего не делает function FormField(data) { this._d = data; } function FormFile(data, opts) { FormField.call(this, data); this.opts = opts; } FormFile.prototype = FormField.prototype; //FormFile.prototype.constructor = FormFile; var a = new FormFile(1, 2); var b = new FormFile(10, 22); console.log(a, a instanceof FormField, b instanceof FormField); console.log(b, a instanceof FormFile, b instanceof FormFile); точней, делает то, что перезаписывает скрытую ссылку на явную. |
Цитата:
Цитата:
где вы тут увидели открытие перечислимости конструктора? прогоните объекты a или b через for...in и посмотрите где там перечисляется конструктор? |
Цитата:
Хотя, по хорошему, на это пофиг. |
devote,
Я не так выразился. Вы явно переопределили ссылку, скрытую, которая там и так была. Это лишнее телодвижение просто. а само свойство constructor -- как было скрытым, так и осталось. |
Цитата:
|
Цитата:
|
devote,
Да, я ошибся, невнимательно глянул, извиняюсь. Но код ваш работает и без этого. Зачем Вы это сделали? |
Цитата:
|
При наследовании у ребенка в конструкторе получается ссылка на конструктор родителя. необходимо восстановить ребенку в конструкторе ссылку на свой конструктор.
|
tsigel,
Но тогда экземпляры FormFiled, будут ссылаться на FormFile function FormField(data) { this._d = data; } function FormFile(data, opts) { FormField.call(this, data); this.opts = opts; } FormFile.prototype = FormField.prototype; FormFile.prototype.constructor = FormFile; o=new FormField() console.log(o.constructor) // [Function: FormFile] |
Часовой пояс GMT +3, время: 11:57. |