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