function Person(){
}
var xiaoming = new Person();
Person.prototype = {
name:'小明',
age:18,
heigth:180
};
console.log(xiaoming.name);
</script>
为什么采用person字面量形式创建的原型对象,先实例对象会造成undefined
function Person(){
}
var xiaoming = new Person();
Person.prototype.name = '小明'
console.log(xiaoming.name);
</script>
而这种不会undefined
第一种方法 Person.prototype 变成了完全不同的另一个对象,新对象与原来的对象没有任何关系。之前 new 出来的使用的原来的对象,所以没有影响。
在 Person.prototype = {....} 之后,
person.prototype === xiaoming.__proto__
是 false 。两者已经无关了,因为 Person.prototype 变成了另一个对象。第二种方法,Person.prototype 对象还是那个对象,但是这个对象的内容发生了变化。所以 xiaoming.name 找到了变化了的 name 。
Person.prototype.name = "小明" ,
Person.prototype === xiaoming.__proto__
依然是 true 。所以 xiaoming.name 依然可以找到 改变之后的 name 。