ES6基础入门(三)—— Symbol详解

es6的新机制
1.Symbol:新的数据类型,表示一个不可重复的值,不是函数,不能通过new调用
作用:定义不会重名的变量;定义常量;内置Symbol的值(Symbol.iterator(返回容器的迭代器方法),需要使用reflect来遍历获取所有的属性)
2.for和keyFor的作用
3.Symbol的作用
注意:symbol的定义的属性不会被for in for of遍历

 <script>
     //定义Symbol
    let s1 = Symbol();
    let s2 = Symbol();
    console.log(s1 === s2); //false
    //2.
    let s1 = Symbol("list");
    let s2 = Symbol("sss");
    console.log(s1,s2)  //Symbol(list) Symbol(sss)
    
    //重复的使用某哦个唯一的symbol
    let s1 = Symbol("first");
    //1.通过symbol.for()方法定义symbol的值,会在全局注册一个key=symbol的键值对
    //后面可以通过key来获取前面生成的symbol
    let s2 = Symbol.for("second");
    let s3 = Symbol("first");
    //先去全局中查找是否有对应key的symbol
    let s4 = Symbol.for("second");
    let s5 = Symbol.for("first");
    console.log(s1===s3); //false
    console.log(s2===s4); //true
    console.log(s1===s5); //false
    
    //2.symbol.keyfor通过某个symbol的值,获取对应的key值
    console.log(Symbol.keyFor(s1));//undefined
    console.log(Symbol.keyFor(s2)); //second
    
    //3.symbol的使用:
    //继承的时候使用
       let username = Symbol();
        let obj = {
            username:"tom",
                age:18,
            sex:"man",
            [username]:"kein"   //新增symbol类型的username
        }
        console.log(obj) // {username: "tom", age: 18, sex: "man", Symbol(): "kein"}
        
        for (let field in obj){
            console.log(field)   //username  age   sex
        }
        
        for(let [key,value] of Object.entries(obj)){
            console.log(key,value)  // username tom  age 18   sex man
        }
</script>

年轻人要戒骄戒躁,脚踏实地,同时也要仰望星空。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值