概念:
面向过程是亲力亲为,事无巨细
面向对象就是找一个对象,指挥得到结果
面向对象将执行者变成指挥者
面向对象不是面向过程的替代,而是面向过程的封装
特性:
抽象性
如果需要用一个对象描述一个数据,需要抽取这个对象 的核心数据,对象不再特定条件下,不知道是什么
抽象就是雾里看花,模模糊糊
比如:name age可以表示人 也可以表示动物
封装性
对象将数据和功能组合在一起就是封装
方法就是功能
js对象就是键值对的集合
键值如果是数据(基本数据,复合数据,空数据),就 成为属性
键值如果是函数,就称为方法
继承性
自己没有,但是别人有,拿过来成为自己的
继承是实现复用的一种方法
在C++等语言中,继承满足一个模板的规则,类是模板, 规定一个对象应该具有什么样的属性和什么样的方法,在这些 语言中,继承是模板之间的继承,一个模板继承另一个模板, 那么该模板就有另一个模板的成员,那么由该模板创建出来的 对象就同时具有这两个模板的成员。
js中没有明确的继承语法,一般都是按照继承的理念 实现对象成员的扩充实现继承,因此js中继承方法特别多
使用面向对象进行编程:
使用现有对象
自定义对象
js是一个基于对象的多范式的编程语言
多范式:多种方法,多种编程的习惯
一个变量是有类型的,但是在js中变量没有类型,数据有类型。所以在讨论js特性的时候,没有多态性,js支持多态性,但是不是以那种方式实现,而且在js中不需要考虑多态性