当为对象实例添加一个属性时,他会覆盖该对象的原型中的具有相同属性名的属性,当我们访问该对象的属性时首先访问的是该对象实例中的属性,如果该属性不存在则访问其原型中的属性。
我们可以利用hasOwnProperty方法 来识别我们的属性是在对象实例里,还是在该对象的原型(Prototype)里。
当你查看的属性在对象里时则返回 (true)否则即在(prototype)里返回的是 false;
只有当我们删除 该属性时,才能访问到 其原型里德属性。
例如:
<script type="text/javascript">
function Person()
{
Person.prototype.sex="男";
Person.prototype.name="我的名字";
Person.prototype.age=26;
}
var p=new Person();
p.name="哈哈";
alert(p.name);//哈哈
alert(p.hasOwnProperty("name"));//true;
delete p.name;
alert(p.name);//我的名字;
alert(p.hasOwnProperty("name"));//false;
alert(Person.prototype.constructor);//弹出的是该对象的构造函数 原型中的 constructor属性指向的是 其所在对象的构造函数;
</script>
所以我们利用hasOwnProperty()方法就可知道什么时候访问的是对象的属性,什么时候访问的是其原型中的属性;