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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Class类和function函数的面向对象设计以及用法区别相关的知识,希望对你有一定的参考价值。

参考技术A

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 的原型链连接起来但却独立拥有自己的属性和方法。

以上是关于Class类和function函数的面向对象设计以及用法区别的主要内容,如果未能解决你的问题,请参考以下文章

ES6新增语法(四)——面向对象

javascript 面向对象设计之 Function 普通类

java.面向对象设计的核心——类和对象

面向对象程序设计——概述,定义基类和派生类,虚函数

Swift-iOS中类和结构体

PHP类和对象之定义类的方法