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 还是非常有使用它的价值的,不用逃避,把它用在合适的场景,肯定会发现其魅力~~
最后
文章到这里就完结了,谢谢大家对文章的喜爱
另外大家也可以在交流区提问,笔者会在空闲时间解答问题。