原型的动态性
1.实例与原型之间的连接是一个指针,而非一个副本
因此对原型对象所做的任何修改都能立即从实例上反映出来,即使是先创建了实例后修改原型也照样如此。
var friend=new Person();
Person.prototype.sayHi=function(){
console.log("hi");
}
friend.sayHi();//"hi"(没有问题)
2.先创建实例,然后又重写原型对象,实例对象指向的仍是最初的原型
function Person(){
hobby:"painting"
}
var friend=new Person();
Person.prototype={
constructor:Person,
name:"Nicholas",
age:29,
job:"SoftWare Engineer",
sayName:function(){
console.log(this.name);
}
};
console.log(friend.name);//undefined
附:关于重写原型对象的图示