JS class 并不只是简单的语法糖

JavaScript 本身的设计就是“通过原型委托”来实现代码复用的,结果 ES6 搞出了个 class 作为语法糖,其本身还是基于原型链,但又是为了实现面向对象,面向对象是基于 class 类那种“复制”来实现代码复用。

类 和 原型,是两种不同的东西,JS class 将二者混在了一起,别不别扭?

后来也看到一些文章说在 JS 中使用 class 类会造成一些困扰,比如这篇:medium.com/giant-machi…,所以更加坚定要减少使用 class 。

而实际上,本篇题目是:JS class 并不只是简单的语法糖,所以,本篇并不是为了说它不好,而是要说它的好的!

class 第一个好:私有变量

如果不用 class , 还有什么更优雅的方法实现以下子类的私有变量吗?


设想下,我们用原型链的思路模拟(对象):


没有实现私有属性 _givenName

而 class 可以将值存为私有,使得对象外部不能修改:

代码示例可参考:javascript-classes-are-not-just-syntactic-sugar

class 第二个好:super 继承

class 可以通过 super 更优雅的实现继承、和重写,比如:


如果是按照老样子,原型链,它可能是这样的:


综上两点,JS class 还是非常有使用它的价值的,不用逃避,把它用在合适的场景,肯定会发现其魅力~~

最后

文章到这里就完结了,谢谢大家对文章的喜爱

另外大家也可以在交流区提问,笔者会在空闲时间解答问题。

前端学习群:微信学习群

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容