ReactNative 进阶(二十八):ES6 Symbol 用法

一、什么是 Symbol?
Symbol是es6中一种新增的数据类型,它表示独一无二的值。es5把数据类型分为基本数据类型(字符串、数字、布尔、undefined、null)和引用数据类型(Object),es6中新增的Symbol数据类型划分到基本数据类型。
为什么会有这样一种数据类型呢?
这个时候,新增加的方法和属性就会去把原有的方法覆盖,这样就产生了冲突。
由于对象的属性和方法是字符串组成,这样新增方法和属性的时候有可能冲突,在es6中就新增了一种数据类型,表示独一无二的值。
通过Symbol函数可以创建一个独一无二的值,每一次执行Symbol函数的时候返回的都是一个对象。
上述代码中,打印出来的值都是Symbol() , 怎样才能区分谁是 s1,谁是 s2 呢?可以通过传参形式来解决:
二、应用场景
Symbol通常用于设置对象的属性名或者方法,防止新加入的属性或者方法与原来属性或者方法冲突。
这里要注意的是 name 的值必须是在[]中表示是可以改变的是一个变量。
三、注意事项
Symbol里面的参数仅仅是对Symbol的描述,没有其他意义,因此,即使描述相同,Symbol也是不同的。
Symbol这个函数的返回值是一个对象。
Symbol函数不能使用New关键字调用。
Symbol类型在做类型转换的时候不能转成数字。
Symbol不能做任何运算
Symbol在作为对象属性或者方法的时候,如果不赋值给一个变量的话,没有办法取值。
Symbol没有办法被for in循环遍历
可以使用Object.getOwnPropertySymbols查看对象上所有的symbol属性。
四、拓展阅读
版权声明: 本文为 InfoQ 作者【No Silver Bullet】的原创文章。
原文链接:【http://xie.infoq.cn/article/e934357042a97c3f2cc2c5e10】。文章转载请联系作者。











评论