Преимущества установки свойства «Конструктор» в «Прототип» - PullRequest
16 голосов
/ 09 февраля 2011

В наследовании JavaScript Prototype, какова цель добавления свойства prototype.constructor. Позвольте мне объяснить на примере.

var Super = function() {
    this.superProperty = 'Super Property'
}
var Sub = function() {
    this.subProperty = 'Sub Property'
}

Sub.prototype = new Super();
Sub.prototype.constructor = Sub; // advantages of the statement

var inst = new Sub();

Следующие строки всегда возвращают true во всех случаях, при добавлении Sub.prototype.constructor = Sub или нет.

console.log(inst instanceof Sub)   // true
console.log(inst instanceof Super) // true

Думаю, это может быть полезно при получении новых экземпляров, но когда и / или как?

Заранее спасибо.

1 Ответ

10 голосов
/ 09 февраля 2011

Это просто для правильного сброса свойства constructor, чтобы точно отразить функцию, используемую для создания объекта.

Sub.prototype = new Super();

console.log(new Sub().constructor == Sub);
// -> 'false' 

Sub.prototype.constructor = Sub;
console.log(new Sub().constructor == Sub);
// -> 'true' 
...