每一个JavaScrip对象(除null以外)都与另一个对象相关联,“另一个”对象就是我们数之的原型,每一个对象都能从原型继承属性。假设要查询 a 对象的属性x,如果a中不存在x属性,那么将会继续在a的原型对象中查询属性x。如果原型对象中也没有x,但这个原型对象也有对象,那么继续在这个原型对象的原型上执行查询,直到找到x或者查找到原型为null的对象为止。可以看到,对象的原型属性就构成了一个“链”,通过这个“链”可以实现属性的继承,我们称之为原型链。
var a ={}// a从Object.prototype 继承对象的方法
a.x =1// 给a定义了一个属性xvar p =inherit(o)// p 继承o和objct.prototypep.y
p.y =2// 给p 定义了属性yvar q =inheri(p)// q 继承了p\o\object.prototype
q.z =3// 给q 定义了属性zvar s = q.toString();// toString继承自object。prototype
q.x + q.y // 返回 3 x和y分别继承自 a 和 p