首先一个对象(比如Obj)包含一个成员属性集,其中属性集里面有个内部属性__proto__(这个属性在某些新型浏览器里面对开发者可见)就是原型prototype属性,这个原型属性可以引用一个任意对象(PObj),这个Pobj对象在对象成员查找方面就是之前那个对象(Obj)的属性成员集预备空间,比如你用Obj.member1引用Obj的一个属性,首先在Obj的属性集里面找member1这个属性,当找不到的时候,就跑到其成员集预备空间原型对象PObj的成员属性集里面去找这个member1,找到以后,就当成Obj的属性一样返回给你。而且上面的这个属性查找机制对于普通数据属性和函数类型的方法成员属性都适用。
同时原型是可以链式查找的,比如之前的member1在Pobj里面找不到的时候可以再到Pobj的原型属性对象里面去找,一直到找到为止。
这种向上链式查找的特性和静态OO语言里面的OO属性动态查找机制有一定类似,所以原型成为JS的OO模拟实现机制之一。
【 在 pcal 的大作中提到: 】
: 在学习javascript,对“对象的prototype”这个概念无法理解。
: 能否提点一二?
--
FROM 124.42.13.*