JavaScript是不是面向对象的?它拥有对象,可以包含数据和处理数据的方法。对象可以包含其他对象。它没有类(在JavaScript 2.0真正实现之前),但它却有构造器可以做类能做的事,包括扮演类变量和方法的容器的角色。它没有基于类的继承,但它有基于原型的继承。两个建立对象系统的方法是通过继承和通过聚合。 JavaScript两个都有,但它的动态性质可以让它的动态系统具备超越“聚合”的能力。
一些些批评说JavaScript不是真正面向对象的,因为它不能提供信息的隐藏。也就是,对象不能有私有变量和私有方法:所有的成员都是公共的。但随后有人证明了JavaScript对象可以拥有私有变量和私有方法。另外还有批评说JavaScript不能提供继承,但随后有人证明了JavaScript不仅能支持传统的继承还能应用其他的代码复用模式。
说JavaScript是一种基于对象的语言,是一种正确而略显保守的判断,而说JavaScrip不面向对象,在我看来则是错误的认知。事实上有充足理由证明JavaScript是一种面向对象的语言,只是与传统的class-based OO(基于类的面向对象)相比,JavaScript有它与众不同的地方,这种独特性我们称它为prototype-based OO(基于原型的面向对象)。
还没有评论,来说两句吧...