ES6语法之新数据类型Symbol

1.Symbol:新的数据类型,表示一个不会重复的值


            //1.Symbol:新的数据类型,表示一个不会重复的值
            //不是函数,不可以new         
            let sym = Symbol('33');
            console.log(typeof sym);//symbol


            //Symbol返回的值不会相同
            let sym2 = Symbol('aa');
            let sym3 = Symbol('aa');
            console.log(sym2 === sym3);//false


2.Symbol.for()方法


            //Symbol.for()方法
            //定义到Symbol的值
            //并且会在全局注册key-Symbol箭值对
            let sym4 = Symbol.for('aa');
            let sym5 = Symbol.for('aa');
            console.log(sym4 === sym5);//true
            console.log(sym4);//true

            //Symbol.keyFor()方法
            //通过某个key获取对应的key值
            let sym6 = Symbol.for("bb");
            let sym7 = Symbol.keyFor(sym6);
            console.log(sym7);//bb

3.使用场景


            //作用:
            //定义不会重名的属性
            let name = Symbol.for('name');
            let obj = {
                name: '小张',
                age: '22',
                sex: '男',
                [name]: '张'
            }
            console.log(obj)//{name: "小张", age: "22", sex: "男", Symbol(name): "张"}

            console.log(obj.name)//小张
            console.log(obj[Symbol.for('name')])//张

            obj[Symbol.for('name')] = '张XX';
            console.log(obj)//{name: "小张", age: "22", sex: "男", Symbol(name): "张XX"}
            //定义常量
 
 			//可以利用这个特性,为对象定义一些非私有的、但又希望只用于内部的方法


4.Symbol定义属性不会被(for in)(for of)遍历


            let name2 = Symbol.for('name');
            let obj2 = {
                name: '小张',
                age: '22',
                sex: '男',
                [name2]: '陈XX'
            }
            //Symbol定义属性不会被(for in)(for of)遍历
            for (let i in obj2) {
                console.log(obj2[i]) //小张 22 男
            }
            //需要用reflect来获取全部的属性
            console.log(Reflect.ownKeys(obj2))//["name", "age", "sex", Symbol(name)]
            //遍历
            for (let i in Reflect.ownKeys(obj2)) {
                console.log(obj2[Reflect.ownKeys(obj2)[i]]) //小张 22 男 陈XX
            }


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值