JavaScript是面向对象语言还是基于对象的语言?这是一个问题
其他语言相比
- ES6之后才有对象的概念,却没有类的概念
- JavaScript对象里边能自由添加属性(其他语言不可以)
对象
- 定义:可以触摸或者可以看见、人的智力可理解、可以指导思考或行动(进行想象或施加动作)的东西;( ------Grady Booch《面向对象分析与设计》)
- 特征:
- 有唯一标识性 (完全相同的两个对象,也并非同一个对象)
- 有状态 (同一对象可能处于不同状态之下)
- 有行为 (对象的状态,可能因为它的行为产生变迁)
- JavaScript中,对象的状态和行为其实都被抽象为了属性(property);
两类属性
-
数据属性
-
访问器(getter/setter)属性
- JavaScript 对象的运行时是一个“属性的集合”,是一个属性的索引结构
和其他基于类的面向对象不同的是JavaScript提供了完全运行时的对象系统,它可以模仿多数面向对象编程范式,所以它也是正统的面向对象语言
关于对象的描述
- 类(如C++、Java)
- 原型(JavaScript)
基于原型体系早期产生的框架:PrototypeJS、Dojo
网友评论