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】。文章转载请联系作者。
评论