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

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

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

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

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

如果这个对象中不存在这个属性就会报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中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值