1. 重写原型对象与默认原型对象比较
- 重写原型对象相当于新建一块空间,与默认的原型对象相互独立
- 实例会指向离其被创建时最近的原型对象。
function Person(){
}
Person.prototype = {
constructor: Person,
name : "Nicholas",
};
Person.prototype.name="Betty";
var friend = new Person();
alert(friend.name); //Betty
function Person(){
}
Person.prototype.name="Betty";
Person.prototype = {
constructor: Person,
name : "Nicholas",
};
var friend = new Person();
alert(friend.name); //Nicholas
说明: 先创建了Person的一个实例,然后,给默认原型赋值和重写了其原型对象。代码一friend被创建时,离默认原型近,故friend指向默认原型。而代码二的friend被创建时,临近重写原型,friend指向重写原型。
2. 实例与原型的同名属性比较
function Person(){
}
Person.prototype.name="Betty";
var friend = new Person();
friend.name="Kitty";
alert(friend.name); //Kitty
说明:实例属性必须跟在实例被创建后,才正常执行。
function Person(){
}
friend.name="Kitty";
Person.prototype = {
constructor: Person,
name : "Nicholas",
};
Person.prototype.name="Betty";
var friend = new Person();
alert(friend.name); //无结果