如何没有对象,那就给自己new一个 前端攻城狮–圣墨
JavaScript对象:面向对象还是基于对象?
什么是面向对象
- 面向对象的编程被认为是:更接近人类思维模式的一种编程范式
- JavaScript 推出之时受管理层之命被要求模仿java,所以,JavaScript创世人Brendan Eich 在”原型运行时“的基础上引入了new、this等语言特性,使之“看起来更像Java”。
JavaScript 对象的特征
- 对象具有唯一标识性
- 对象有状态
- 对象有行为
- JavaScript中对象的状态和行为统称为对象的属性
- JavaScript中对象独有的特色是:对象具有高度的动态性,这是因为JavaScript赋予了使用者在运行时为对象添改状态和行为的能力。
JavaScript 对象的两类属性
- 数据属性,数据属性具有四个特征
- value: 就是属性的值
- writable: 决定属性能否被赋值
- enumerable:决定for in 能否枚举该属性
- configurable: 决定该属性能否被删除或者改变特征值
- 访问器属性
- getter: 函数或undefined,在取属性值时被调用。
- setter: 函数或undefined,在设置属性值时被调用。
- enumerable:决定for in 能否枚举该属性
- configurable: 决定该属性能否被删除或者改变特征值
个人思考:
- C++ 和 java 对象是基于类,无法在运行时动态修改对象的状态和行为
- JavaScript 中的对象具有高度动态,运行时可以修改和添加
- 在JavaScript中,对象也包括状态和行为,但在JavaScript中,对象的状态和行为统称为属性,
- 在 ES6 出现之前,大量的JavaScript 程序员视图在原型体系的基础上,把JavaScript 变得更像基于类的编程,进而产生了很所谓的“框架”,比如PrototypeJS、Dojo。
- 最后,JavaScript是面向对象的语言,可是JavaScript的对象设计跟目前主流基于类的面向对象差异非常大,但是JavaScript提供了完全运行时的对象系统。这使得他可以模仿多数面向对象的编程范式,所以它也是正统的面向对象的语言。