当代码读取某各对象的某个属性时,都会执行一次搜索,搜索首先从对象实例本身开始,如果在实例中找到了具有给定名字的属性,则返回该属性的值, 如果没有找到,则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性。如果在原型对象中找到了这个属性,则返回该属性的值。
在实例中添加的属性与实例原型的属性同名,该属性会屏蔽原型中的那个属性。使用delete操作符可以完全删除实例属性,从而让我们能够重新访问原型中的属性。如下例子:
function Person(){
this.name="Zoey";
this.age=22;
}
Person.prototype.name="Marry";
var person=new Person();
console.log(person.name);
delete person.name;
delete person.age;
console.log(person.name);
console.log(person.age);
结果如下:
Zoey
Marry
undefined
undefined