以下是进一步说明问题的代码:
function MyConstructor() {}
var myobject = new MyConstructor();
myobject.constructor == MyConstructor; // true
function MyConstructor() {}
MyConstructor.prototype = {};
var myobject = new MyConstructor();
myobject.constructor == MyConstructor; // false
那么,为什么第二个块为假?
最佳答案
创建的对象的constructor
会更改,因为其原型的constructor
会更改。这就是为什么您通常不应该覆盖原型的原因。如果这样做,请确保稍后再设置:
function MyConstructor() {}
MyConstructor.prototype = {};
MyConstructor.prototype.constructor = MyConstructor;
…
var myobject = new MyConstructor();
myobject.constructor == MyConstructor; // false