标签:之间 标识 create 语法 stage 属性集 解决 原因 规范
简要看了一下Stage3的 Class Field提案,以及被卡住的原因
很意外的是,Class Field 在社区中,尤其是中文社区中的反对声音很大,几乎伴着提案进入Stage3。
反对的理由是因为:
Class Field颠覆了对象是一个属性集的传统定义,采用字段来定义类包含的东西,
引入了下述:
新的语法分析标记
新的规范类型
新的环境记录
新的对象成员结构
并且,因为字段的特性,选用了混沌时期的1.0版本时的mixin,类抄写的继承机制,颠覆了原型继承的基石,而将JS拉入真正的面向对象
这将导致,字段本身将代替属性,淘汰之前的写法
let obj={name:wzt,age:19}
后来的写法将变为:
let obj={name=wzt,age=19}
初看之下只是把冒号变为了等号,但实际上,原来对象中的,是一个字符串,就像map中的key一样,但是现在等号前面的,却类似于标识符,相当于声明的变量/常量
这将使之前很多JS之前修修补补的特性变得无意义,比如可计算属性,下标存取语法等等,也将使得JS内置对象之间的原型链变得无意义
尽管如此,就像You don‘t know JS的作者,并不太喜欢class语法一样。这个提案一直被卡在stage3,国内也不太认可。
但,JS的未来,如果是轻量级的应用,使用Object.create()的原型委托模式也绰绰有余。
如果是大型应用,就必须处理封装和多态这两个核心问题。这个提案本身也希望一劳永逸的解决封装这个问题
标签:之间 标识 create 语法 stage 属性集 解决 原因 规范
原文地址:https://www.cnblogs.com/frontend-tutorial/p/13619179.html