以下是进一步解释问题的代码:
function MyConstructor() {}
var myobject = new MyConstructor();
myobject.constructor == MyConstructor; // true
function MyConstructor() {}
MyConstructor.prototype = {};
var myobject = new MyConstructor();
myobject.constructor == MyConstructor; // false
那么,为什么第二个块错误?
答案 0 :(得分:3)
创建对象的constructor
会发生变化,因为其原型的constructor
会发生变化。这就是为什么你通常不应该覆盖原型。如果这样做,请务必稍后再将其设置为:
function MyConstructor() {}
MyConstructor.prototype = {};
MyConstructor.prototype.constructor = MyConstructor;
…
var myobject = new MyConstructor();
myobject.constructor == MyConstructor; // false