javascript是面向对象的,js每个内建对象都是从object派生出来的,这样就有继承,多态和重构三个面向对象的特性,即使现在js是基于prototype的伪继承,但是总体思想是一个面向对象的语言。
本教程操作环境:windows7系统、javascript1.8.5版、Dell G3电脑。
与其它的语言相比,JavaScript中的“对象”总是显得不是那么合群。一些新人在学习JavaScript面向对象时,往往也会有疑惑:为什么JavaScript(直到ES6)有对象的概念,但是却没有像其他的语言那样,有类的概念呢?为什么在JavaScript对象里可以自由添加属性,而其他的语言却不能呢?
甚至一些争论中,有人强调,JavaScript并非“面向对象的语言”,而是“基于对象的语言”,这个说法一度流传甚广,而事实上,我至今遇到的持有这一说法的人中,无一能够回答“如何定义面向对象和基于对象”这个问题。
实际上,基于对象和面向对象两个形容词都出现在了JavaScript标准的各个版本当中。我们可以先看看JavaScript标准对基于对象的定义,这个定义的具体内容是:“语言和宿主的基础设施由对象来提供,并且ECMAScript程序即是一系列互相通讯的对象集合”。这里的意思根本不是表达弱化的面向对象的意思,反而是表达对象对于语言的重要性。
那么,在本篇文章中,我会尝试让你去理解面向对象和JavaScript中的面向对象究竟是什么。
什么是对象?
我们先来说说什么是对象,因为翻译的原因,中文语境下我们很难理解“对象”的真正含义。事实上,Object(对象)在英文中,是一切事物的总称,这和面向对象编程的抽象思维有互通之处。中文的“对象”却没有这样的普适性,我们在学习编程的过程中,