B 2.4 原型的继承
面向对象不仅提供了对象类的支持,还提供了他们之间继承的结构层级关系,典型的例子就是Shape对象,Shape定义了计算周长和面积的方法,在这个基础上,我们可以实现具体的矩形,正方形,三角形和圆形的方法实现。
范围内的继承。一个对象的方法或者属性的范围决定了谁可以使用它,也就是说,不管它使public型的,还是private和protected的。
范围和继承在定义一个域模型的时候会很有用。不幸的是,JavaScript对这两个都不支持。但是人们并没有因为这个而停止,又有一些新的解决方案产生了。Doug Crockford开发了一些新的解决方法来实现JavaScript对象的继承和范围。无疑,这种工作是令人感动的,也应该来仔细看一下。这种技术需要的语法对普通的读者可能有点难理解,在团队协作工作过程中,接受这种技术在数量上可以与Java框架相比拟,而在复杂性上就与Struts和Tapestry相似,也就是说,要么就没有人会,要么就要所有成员都学会。我建议那些对这个领域有兴趣的人读一读Crockford’s网站上的文章。
在面向对象的世界里,已经出现了从复杂的继承逐渐向配合转变的趋势。通过配合,普通的功能可以被抽取出来放到帮助类里面,在其他类里面进行使用,在很多方案里,配合可以提供类似于继承的特性,而JavaScript很好的支持配合。
我们JavaScript对象学习的下一站反射机制。