以下是进一步说明问题的代码:

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

10-02 12:01