我的答案是:JavaScript的对象是一个很模糊的概念,我们鲜少像java等其他语言去对待它。
对于是面向对象还是基于对象,我很难回答。接下来看看winter老师如何说?
1.JavaScript(直到 ES6)有对象的概念
2.JavaScript 对象里可以自由添加属性
JavaScript标准对基于对象的定义,这个定义的具体内容是:“语言和宿主的基础设施由对象来提供,并且 JavaScript 程序即是一系列互相通讯的对象集合”。
这里的意思根本不是表达弱化的面向对象的意思,反而是表达对象对于语言的重要性。
在《面向对象分析与设计》这本书中,Grady Booch 替我们做了总结,他认为,从人类的认知角度来说,对象应该是下列事物之一:一个可以触摸或者可以看见的东西;人的智力可以理解的东西;可以指导思考或行动(进行想象或施加动作)的东西。
JavaScript在最开始的时候用过原型链,用来继承一些方法,后来为了模仿java用到了一些关键字:new,this,搞的JavaScript四不像。
JavaScript 对象的特征:
第一种举例:
var o1 = { a: 1 };var o2 = { a: 1 };console.log(o1 == o2); // false
在 JavaScript 中,对象的状态和行为其实都被抽象为了属性
JavaScript 中对象独有的特色是:对象具有高度的动态性,这是因为 JavaScript 赋予了使用者在运行时为对象添改状态和行为的能力。通俗来说,可以随时添加属性,比较自由
var o = { a: 1 };o.b = 2;console.log(o.a, o.b); //1 2
此文章为3月Day06学习笔记,内容来源于极客时间《重学前端》,推荐该课程。