symbol是ES6中新添加的一种数据类型,他属于原始数据类型,也就是存放在栈中,是按值传递。
首先来看看他的声明方式
1 | let vm = Symbol(); |
我们来看看他的打印,与将他转换成字符串相比,我们可以看到symbol类型的输出的是红体字
1 | let vm = Symbol('lalala'); |
我们来看看在对象中他用于key值构建的地方,以及在对象中的打印方法
1 | let vm = Symbol(); |
symbol还有一个用处就是他有对数据进行保护的作用
比如,我们用常规的方法来打印对象,我们可以看到对象中每一个元素都被打印出来了
1 | let obj = {a:1,b:2}; |
而如果我们不希望b被打印出来,这个时候就是symbol上场的时候了
1 | let obj = {a:1}; |