ES6学习总结(三)
本节主要是以下内容,其中重点是 proxy和Reflect 这一点
- Symbol对象
- Set和Map
- Iterator 和 for…of
- proxy和Reflect
-
1.Symbol对象
在很多时候,我们在定义对象的属性时很容易遇到重名的情况,或者使用第三方的插件时,容易遇到重名的情况。ES6引入了第七种数据类型Symbol,作为一个具有 独一无二 的值存在。
所以现在定义一个对象,它的属性名可以是字符串,也可以是Symbol。
talk is cheap , show me the code!
const sym = Symbol()
const bar = Symbol('bar')
const mySym1 = Symbol('mySym')
const mySym2 = Symbol('mySym')
上面的四行代码均会声明一个独一无二的Symbol对象,Symbol()括号里传入的参数,是对这个对象的描述,当你在控制台打印这些对象时,不至于全都返回Symbol,当然你也可以不写。建议和变量名一致就好。下面是这四个Symbol的控制台打印情况
sym
--Symbol()
bar
--Symbol(bar)
mySym1
--Symbol(mySym)
mySym2
--Symbol(mySym)
mySym1 === mySym2
--false
在作为属性名的时候,Symbol对象的属性名要用方括号赋值,而不用点运算符。
let obj = {
}
obj[mySym1] = 'hello' //正确
obj.mySym2