当我们声明javascript函数Person
,Person.prototype.constructor === Person
。然后我们重写Person.prototype
,构造函数为Object
而不是Person
。
function Person() {
this.name = 'Kitty';
}
console.log(Person.prototype.constructor === Person) // true
Person.prototype = {
say:function(){
return 'Hi';
}
}
console.log(Person.prototype.constructor === Person) // false
console.log(Person.prototype.constructor === Object) // true
因此,最好将构造函数重置为自身。
我的问题是错误Person.prototype.constructor
的实际影响是什么?它似乎与承诺的行一致。
// Person.prototype.constructor = Person
var me = new Person();
console.log(me instanceof Person) // true
console.log(me.name) // Kitty
console.log(me.say()) // Hi
console.log(me.constructor === Person) // false
更一般地说,prototype.constructor
到底做了什么?