前言
ES标准以前有啥数据类型???
回顾一下:
1 | undefined |
一共六种 没了!
ES6新增了一种了叫做Symbol的数据类型
Symbol的特征
Symbol的意思,就是标记。
它这样用:
1 | let a = Symbol(); |
特征是每创建一个新的Symbol,它代表的值都不一样
括号里面可以传入参数,是你描述的东西的内容。
不过就算你不传值,你用相同的方式创建的两个Symbol都是不一样的。
看下面:
1 | let a = Symbol(); |
输出false,说明它俩不是一回事。
Symbol能干啥
Symbol可以生成唯一的标识
已知最大的用处是做对象的属性名称,防止这个属性名称被重写
怎么理解?
平时我们如果有一个属性:
1 | person.name = 'wang'; |
此时如果有个人来一行:
1 | person.name = 'li'; |
如果你的name是不希望被改变的,那么此时此刻你会很难过。
这样做:
1 | let person = {}; |
这时,它仍然输出了li,还是被改变了。
那你说个p啊!!完全没用啊摔!!!
因此楼上这种情况,是不起作用的,我们说属性名称不能被重写,是这种情况:
1 | let name = Symbol(); |
输出的对象里面有两个键,一个是Symbol类型,一个是name。
此时你除了用person[name]这种形式外,都无法访问和修改这个Symbol类型对应的值。
其实硬要改也是可以的,只是限制了你,必须调用你最初Symbol()出来的那个Symbol类型数据,别的没用。
准确的说,是避免了你“无意中”覆盖已有变量。
结语
这个新类型,功能比较单一。
不过也是很实用的,点赞。
楼上只是介绍了一个主要的原因,以后一定还会有更多的发现的^_^。