对象属性的继承和属性访问

 对象属性的查询过程中,现在本对象中的自有属性中查找,如果查不到就会在原型链中查找。

 对象属性的设置过程中,如果这个属性是自有属性,那么再设置一个同名的就会把这个自有属性覆盖掉;

如果这个属性是从原型链中继承来的,那么设置的这个属性不会修改原型链中的值,只会把继承来的那个值覆盖掉。

-----------------------------访问属性错误的情况-----------------------------

如果这个对象中不存在这个属性就会报undefined


接上文:在undefined和null中调用方法就会报错


-----------------------------避免访问错误-----------------------------

var len = o && o.g && o.g.length;

-----------------------------设置属性会报错的场景-----------------------------

对象o中有一个属性p

1.属性p是只读的:不能重新赋值(definePrototype()方法中有一个例外,可以对只读可配置的属性重新赋值)

2.属性p是继承属性且是只读的:不能通过同名的属性进行覆盖

3.对象o中没有自有属性p,且对象是不可扩展的:当o中没有使用setter方法设置属性p,p一定是添加到o中的,

 但是对象o是不可扩展的,所以o还是添加不到对象p中。

猜你喜欢

转载自blog.csdn.net/k152_8747/article/details/79274560