为了更好地理解这种继承,必须更深入地了解属性的访问细节。假设要查询对象o的属性,如果o中不存在x,那么将会继续在o的原型对象中查询属性x。如果原型对象中也没有x,但这个原型对象也有原型,那么继续在这个原型对象的原型上查询,直到找到x或者找到一个原型是null对象为止。可以看到,对象的原型属性构成了一个“链”
o.x =5; 如果对象没有x则创建并赋值,如果有,则简单赋值,如果是从原型那里继承的,则覆盖继承的同名属性。如查继承自一个只读属性。则赋值操作是不允许的。即使修改也是在原始对象上创建属性或对自己已有属性赋值,而不会去修改原型链。
在Js中只有在查询属性时才会体会到继承的存在,而设置属性则和继承无关。