JavaScript与prototype-based继承

Brendan Eich在描画JavaScript的开展历史时提到最后的LiveScript/JavaScript并没有任何“承袭”机制,后来为了方便用户扩展JavaScript言语写自己的库才从Self那边抄来了prototye-based承袭机制(不过Self里对象可以有多个prototype,而JavaScript的是弱化版,每个对象只能有一个prototype)。

至于事先Brendan为啥要用Self的prototype,与其说是技术缘由还不如说更多是团体品味的选择。Self更酷啊!

Self在面向对象的设计、完成与优化上做了许多探求,发现prototype-based承袭不但可以完美完成一切class-based承袭能做的事,它还能做更多更灵敏的事。而且一个优化的完成依然可以把prototype-based的功用做好。这么酷的东西十分契合Brendan的口味。

而Java十分不契合Brendan的口味。要不是公司压力他相对不会让LiveScript拟合Java的语法,而会做出个Scheme系的脚本言语吧。

要复杂完成的话,prototype-based跟class-based承袭的完成难度其实差异不大。确实前者可以看作比后者更“低级”(low level)的原语,但要完成起来比起后者能偷的懒也就那么一点点。很难说Brendan只是为了“完成复杂”而选择了前者。

提供最优质的资源集合

立即查看 了解详情