在“原型”中设置“构造函数”属性的优点

时间:2011-02-09 11:31:22

标签: javascript inheritance prototype constructor

在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();

在添加Sub.prototype.constructor = Sub时,以下行总是返回true。

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

我想,在获取新实例时可能会有用但是何时和/或如何?

提前致谢。

1 个答案:

答案 0 :(得分:10)

只是正确地重置constructor属性以准确反映用于构造对象的函数。

Sub.prototype = new Super();

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

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