1、什么是面向对象?
面向对象编程是一种编程范式(英文为:Object Oriented Programming ,缩写为:OOP),它将代码分为具有属性和方法的对象。
2、什么是编程范式?
所谓的编程范式(英文为:programming paradigm),指的是计算机编程的基本风格或典范模式。
在编程语言中,根据编程范式来分类可以分为2个大类:分别为命令式编程和声明式编程
1、命令式编程
所谓命令式编程,就是以命令为主,给机器提供一条又一条的命令序列让其原封不动的执行。程序执行的效率取决于执行命令的数量,(概括起来就是:命令式编程就是命令“机器”如何去做事情(how),这样不管你想要的是什么(what),它都会按照你的命令实现),我们常见的命令式编程有 :C++ , C语言 ,Java , C#
在命令式编程语言里面,又可以分为2个大类:面向过程和面向对象
a、面向过程:就是分析出解决问题所需要的步骤,然后把这些步骤一步一步实现
b、面向对象:面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为
2、声明式编程
声明式编程就是告诉“机器”你想要的是什么(what),让机器想出如何去做(how)
在声明式编程里面又分为2个大类:领域专用语言和函数式编程
3、面向对象的三大特征(封装 ,继承,多态)
封装:内部运作隐藏在对象里面,只有基本功能暴露给最终用户。
继承:新对象继承一个现有对象的特征,然后添加一些新的特性。
多态:像电视一样,除了可以观看电视节目以外,还可以用作其他用途(比如连接游戏机后,电视屏幕就能显示出游戏画面),通过电视屏幕输出的这个行为是相同的,但是却可以用作不同的物体,物体不同,最后的效果就不同。
4、原型对象
在JavaScript中,每一个对象,都有一个原型对象。而原型对象上面也有一个自己的原型对象,一层一层向上找,最终会到达 null 。
如下图所示:
由此得出结论:
1、JavaScript 中每个对象都有一个原型对象。可以通过 __proto__ 属性来访问到对象的原型对象。
2、通过 __proto__ 属性一直向上寻找原型对象的话,最终会找到 null 。
3、构造函数的 prototype 属性指向一个对象,这个对象是该构造函数实例化出来的对象的原型对象。
4、JavaScript 中的根对象是 Object.prototype 对象。Object.prototype 对象是一个空对象。
5、JavaScript 中的每一个对象,都是从Object.prototype 对象克隆而来的。Object.prototype 对象就是它们的原型。而 Object.prototype 对象的原型为 null.。
关于对象分类:
在ECMAScript 6 之前,对象可以分为2大类,分别是原生对象和宿主对象,
原生对象又可以分为2类:内置对象和自定义对象。