Class类和function函数的面向对象设计以及用法区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class类和function函数的面向对象设计以及用法区别相关的知识,希望对你有一定的参考价值。
参考技术AClass 为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 的原型链连接起来但却独立拥有自己的属性和方法。
以上是关于Class类和function函数的面向对象设计以及用法区别的主要内容,如果未能解决你的问题,请参考以下文章