2012-09-12 109 views

回答

9

因为您已经用普通对象完全替换了f的原始对象prototype。这是原来的prototype对象,通过.constructor属性举行的参考f

一个对象的构造使用对象文本语法将是Object构造函数创建。

把它找回来,你需要手动把它放在那里。

f = function() {}; 
f.prototype = {}; 
f.prototype.constructor = f; 
thing = new f; 

这会影响新原型对象的原型链中的.constructor属性。

如果您删除属性,你会再次得到Object

delete f.prototype.constructor; 

console.log(thing.constructor); // Object 
相关问题