当前位置:首页 > Web开发 > 正文

es6实现枚举

2024-03-31 Web开发

枚举特点

枚举值不能重复

不能被修改

switch case可以直接判断

Object.freeze()

Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。(来自)

总结:让被冻结的对象,不能再修改。

Symbol

ES5 的对象属性名都是字符串,这容易造成属性名的冲突。比如,,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突。如果有一种机制,保证每个属性的名字都是独一无二的就好了,这样就从根本上防止属性名的冲突。这就是 ES6 引入Symbol的原因。(来自)

总结:凡是属性名属于 Symbol 类型,就都是独一无二的,可以保证不会与其他属性名产生冲突。

实现 体现不可更改 const EnumSex = Object.freeze({ man: Symbol('男'), woman: Symbol('女') }) EnumSex.man = 1; console.log(EnumSex.man); // Symbol(男) 体现值的唯一性 const EnumSex = Object.freeze({ man: Symbol('男'), woman: Symbol('男') }) console.log(EnumSex.man === EnumSex.woman); // false 需要注意的地方

开始实现体现值的唯一性的时候,看到man和woman都是Symbol(‘男‘),感觉执行的时候应该会报错,结果没有报错,还有点怀疑Symbol的唯一性。最后一对比发现是不同的。

Symbol中的参数只是对Symbol的一个描述,为了我们好区分它。

js学习-es6实现枚举

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/41562.html