Class类和function函数的面向对象设计以及用法区别

如题所述

第1个回答  2022-07-10

Class 为es6之后推荐的为了更加体现面向对象思想的一种方式,但从本质上来说它还是原型链的关系,也就是语法糖。而 function 构造函数的方法则是es6之前常规的面向对象思想体现的一种方式。

本篇文章涉及的原理较多,可以结合下列文章:
面向对象思想 、 构造函数和原型及两者作用 、 原型链以及方法执行顺序

在理解class本质之前,我们先根据构造函数的特性:

那么,我们利用 class Person{} 创建出来的类,是否存在这些特征?

由下图可知,类同样有原型对象prototype且prototype中的constructor同样指向Person类,即证明了 1 2 两个论点

因此class类与构造函数之间原理是相同的,class是为了更直观体现出面向对象。

PS :Class 内部只有静态方法,没有静态属性。如果必须定义则类似于函数定义静态成员变量的方式:
Person.sex="男"
之后通过调用静态成员的方式调用即可。

类的静态方法:在类中添加 static ,例如:

重点:

类的继承实现有 extends 关键字

此时的 super 方法必须在constructor内部的第一行,即子类的constructor方法没有调用 super 之前,就使用 this 关键字,结果报错,而放在 super 方法之后就是正确的。

构造函数的实现继承

注意构造函数的继承方法则是利用 call 、 apply 改变指针,同时子对象 Son 的原型对象 prototype 指向 Person 的实例对象,于是便与 Person 的原型链连接起来但却独立拥有自己的属性和方法。

相似回答
大家正在搜