• 主页
  • 个人简介
    • 圣墨 photo

      圣墨

      一个爱折腾,有诗有远方的人

    • Learn More
    • Github
    • Cnblogs
    • Weibo
  • 文章
    • 所有文章
    • 所有标签
  • Html&Css
  • Javascript
  • 设计模式
  • 前端性能优化
  • 原生实现专题
  • 数据结构与算法
  • Book
  • 面试题
  • 前端工具
  • 随记

《重学前端》-02

19 Jul 2019

Reading time ~1 minute

如何没有对象,那就给自己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提供了完全运行时的对象系统。这使得他可以模仿多数面向对象的编程范式,所以它也是正统的面向对象的语言。


javascript  微博  QQ  朋友圈