function Person(name){
this.name=name;
}
var p=new Person('x');
console.log(p.constructor);
// function Person(name){this.name=name;}
function Person2(name){
this.name=name;
}
var one={
sex:'man'
}
Person2.prototype=one;
var p2=new Person2('x');
console.log(p2.constructor);
//function Object() { [native code] },为什么把原型指定为one之后,构造函数的指向也发生了改变。不知道该从哪里梳理这条链。
因为你把默认生成的原型给重写了。
默认生成的 prototype 的 constructor 是指向构造函数的。
你重写后, one 这个对象本身没有 constructor 这个属性.
所以当你 p2.constructor 时,属性查找顺序如下
p2 上没有 constructor, 查找它的原型 one , one 上没有, 查找 one 的原型 Object, Object 上没有, 查找 Object 上的原型 Object.prototype 。 Object.prototype 上有 constructor , 所以就把这个 constructor 返回。