function P(name){
this.name = name;
}
var p = new P("Simon");
var f = {};
f.__proto__ = P.prototype;
P.call(f, "Simon");
问题是:当我在chrome中调试的时候发现f: Object,而p:P,为何不是f:P?
我的理解,由于我更改了f.__proto__属性,导致f的constructor是P,这样f就是是P的实例,这点可以通过f instanceof P === true证明。
刚刚试了IE下是f:P,难道是chrome的问题?
在Chrome里f: Object中的Object是表示f的构造函数是Object,而constructor是每个对象都有的属性,自身的属性会覆盖原型的属性,另现在并不建议使用__proto__,因为并不是标准的。
MDN:Object.prototype.constructor