22 js高级-面向过程编程

173 阅读4分钟

面向过程编程

面向过程 : 就是分析好步骤,按照步骤解决问题

关于 大象关进冰箱 :

面向过程来说是 :

1、打开冰箱
2、把大象装进去
3、关上冰箱

面向对象编程

=面向对象 OOP :是把事物分解成一个一个对象,然后由对象之间分工合作

而对于面试对象是 :

首先找出对象,并写出这些对象的功能
1、大象对象
    进去
2、冰箱对象
    打开
    关闭
3、使用大象和冰箱的功能

特点

面向对象编程具有灵活,代码可复用,容易维护和开发的优点,适合多人合作的大型软件项目

在面向对象程序开发思想中,每一个对象都是功能中心,具有明确分工

特性

面向对象的特性

  • 封装性
  • 继承性
  • 多态性(不同形态之间的)

面向过程和面向对象的对比

面向过程 :

优点 : 性能比面向对象高,适合跟硬件联系很紧密的东西 , 例如单片机就采用的是面向过程编程

缺点 : 没有面向对象易维护、易复用、易扩展


面向对象 :

优点 : 易维护、易复用、易扩展 , 由于面向对象有封装、继承、多态的特性,可以设计出低耦合的系统,使系统更加灵活,更加易于维护

缺点 : 性能比面向过程低

eg : 面向过程 就相当于一份蛋炒饭,联系很紧密。但不易于维护

而 面向对象 就相当于一份 盖浇饭,易于维护,扩展,但性能比面向过程低

类和对象

面向对象的思维特点 :

1、抽取(抽象)对象共用的属性和行为 组织(封装) 成为一个

2、对类进行实例化,获取类的对象

类 class

可以使用class关键字声明一个类,然后用这个类来实例化对象

类 抽取了对象的公共部分,它泛指某一大类 class

而对象是特指的某一个,通过类实例化一个具体的对象

生成类和实例

1、创建类

类名习惯性 首字母大写

image.png

2、实例

image.png

3、类里面有一个函数 constructor

是类的构造函数,用来传递参数,返回实例对象的

当 new 一个实例时,那么就会自动调用该constructor方法 , 

假若没有显示,那么类内部会自动给创建一个constructor()

image.png

在类中添加方法

1、类里面的函数都不需要加 function

2、类里面多个函数 方法之间不要加 逗号

image.png

对象

对象是一个具体的事物,看得见摸得着的

在js中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,eg : 字符串、数值、数组、函数等

对象是由 属性方法组成的

  • 属性 : 事物的特征,在对象中用属性来表示(常用名词)
  • 方法 : 事物的行为 ,在对象中用方法来表示(常用动词)

类的继承 extends

孩子可以继承父类里面的属性和方法

image.png

super

它是可以访问和调用对象父类上的函数,不止可以调用普通函数,也可以调用父类的constructor方法

image.png

调用父类的普通函数

继承中的属性和方法查找原则 : 就近原则

1、继承中,若实例化子类输出一个方法,那就先看子类有没有这个方法,若有就先执行子类的

2、继承中,若子类里面没有,就去父类中查找有没有这个方法,若有,就执行

image.png

super 放到 子类this'之前

在父类中

image.png

在子类中,要继承父类的方法,同时还要在子类扩展新的方法

image.png

使用类注意事项

1、必须先 class 定义类,在new 实例化对象,因为类中没有变量提升

2、类里面共用的属性和方法一定要加 this ,因为 this 指向的是实例对象

this的指向问题

1、在constructor中 this指向的是 实例对象 ; 因为 构造函数开辟了一个新的内存空间,而this指向这个内存空间,在new 中进行实例化,所以this指向的是 实例对象

2、在类中自己创建的方法中 : this是谁调用了这个方法,那么this就指向谁

3、可以在外部创建一个变量,然后把this赋值给它,这样在其余的方法中,想要调用this,就可以调用这个变量

image.png