原型对象的重写

原型对象的重写与添加是不一样的,举例:

var friend=new Person();
Person.prototype.sayHi=function(){
    alert("hi");
}
friend.sayHi();//输出"hi"

在上面这个例子中虽然实例需要调用的函数在实例创建之后才调用的,但是因为这是改写,所以新写的函数仍在原型链中,向上搜索就能找到,再来看下面这个例子。

Person.prototype.sayHi=function(){
    alert("hi");
}
var friend=new Person();
Person.prototype={
    age:10,
    sayHi:function(){
        alert("hi2");
    }
}
friend.sayHi();

在这个例子里最后输出的是”hi”而不是”hi2”,可见当对prototype用字面量的方式重写之后,原来由该对象创造的实例仍然指向原先的对象。