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, время: 05:57. |