本文转载自微信公众号「勾勾的前端世界」,作者西岭 。转载本文请联系勾勾的前端世界公众号。
到底什么是面向对象编程
面向对象是软件程序设计开发的一种方法,一种编程范式,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。
模型是用来反映现实世界中事物特征的,是对事物特征和变化规律的一种抽象,通过建立模型而达到的抽象是人们对客体认识的深化。
什么是对象?
对象是对概念的具体化体现:一本书、一辆汽车、一个人都可以是对象,一个数据库、一张网页、一个与远程服务器的连接也可以是对象。
当实物被抽象成对象,实物之间的关系就变成了对象之间的关系,从而就可以模拟现实情况,针对对象进行编程。
编程中对象是一个容器,封装了属性(property)和方法(method)。
属性是对象的状态,方法是对象的行为(完成某种任务)。
比如,我们可以把 "动物" 进行抽象,使用“属性”记录具体的特征,比如“大小”、“形态”、“毛色”;使用“方法”表示动物的某种行为,比如 “奔跑”、“捕猎”、“跳跃。
举个小例子:
特征 (属性):满身猴毛,尖嘴竖耳,黄发金箍;
行为 (方法):耍金箍棒,踏筋斗云,上凌霄殿;
是谁 ???我不说。
你想到的不是孙悟空就是六耳猕猴,为什么你脑海里能出现一个画面,是因为我通过属性和方法描述了一个 “类”,而你的脑海里便出现了通过类具体生成的 “对象” 。
ECMAScript-262 把对象定义为:无序属性的集合,其属性可以包含基本值、对象或者函数。
严格来讲,这就相当于说对象是一组没有特定顺序的值。对象的每个属性或方法都有一个名字,而每个名字都映射到一个值。也可以将其简单理解为:数据集或功能集。
面向对象编程有三大特性:封装性、继承性、多态性,这三大特性你先有个印象就行,这需要我们学习完具体的语法规则之后,有了一定的使用经验才能再思考得出结论;
JavaScript 中的面向对象
JavaScript 语言本身的设计缺陷,误打误撞,成了解释最为彻底的“世界原本的样子”的计算机编程语言。
——西岭《凡人凡语》
Everything is object (万物皆对象),JS 语言中将一切都视为 对象 。
JavaScript 语言的对象体系,不基于“类” 创建对象,是基于构造函数(constructor)和原型链(prototype)。