面向对象还是基于对象

108 阅读2分钟

基于对象和面向对象两个形容词都出现在了 JavaScript 标准的各个版本当中。

JavaScript 标准对基于对象的定义,这个定义的具体内容是:“语言和宿主的基础设施由对象来提供,并且 JavaScript 程序即是一系列互相通讯的对象集合”。

Object(对象)在英文中,是一切事物的总称,这和面向对象编程的抽象思维有互通之处。

对象并不是计算机领域凭空造出来的概念,它是顺着人类思维模式产生的一种抽象(于是面向对象编程也被认为是:更接近人类思维模式的一种编程范式)。

在不同的编程语言中,设计者也利用各种不同的语言特性来抽象描述对象,最为成功的流派是使用“类”的方式来描述对象,这诞生了诸如 C++、Java 等流行的编程语言。

而 JavaScript 早年却选择了一个更为冷门的方式:原型

对象有如下几个特点。

对象具有唯一标识性:即使完全相同的两个对象,也并非同一个对象。

对象有状态:对象具有状态,同一对象可能处于不同状态之下。

对象具有行为:即对象的状态,可能因为它的行为产生变迁。

JavaScript 程序员都知道,任何不同的 JavaScript 对象其实是互不相等的

在 JavaScript 中,将状态和行为统一抽象为“属性”,考虑到 JavaScript 中将函数设计成一种特殊对象,所以 JavaScript 中的行为和状态都能用属性来抽象。

JavaScript 中对象独有的特色是:对象具有高度的动态性,这是因为 JavaScript 赋予了使用者在运行时为对象添改状态和行为的能力。

此文章为7月Day27学习笔记,内容来源于极客时间《重学前端》,强烈推荐该课程!