ES6-Symbol
发布日期:2021-10-23 19:22:46 浏览次数:4 分类:技术文章

本文共 1515 字,大约阅读时间需要 5 分钟。

 

大家都知道ES5对象的属性名都是唯一的,不可重复的。

如:     var a = {name: 'value'};    a.name = 'value2';    这样的话a里面的name的属性值就会被覆盖,不会生成第二个叫name的属性,具备唯一性。

  ES6引入了一种新的原始属性类型:Symbol,表示唯一的值(独一无二)。

  复习ES5数据类型:Number、String、Boolean、Null、Undefined

 

  注意点:Symbol属性不能new,直接用它。

  

如:    let newDataStructure = Symbol('abc');    console.log(typeof newDataStructure); //symbol       检测数据类型返回symbol    console.log(typeof newDataStructure); //Symbol(abc)       打印全部被Symbol包裹abc

  

  symbol属性内不仅可以放number、string、boolean类型外,还可以放对象

  注意:放入对象一定需要具备一个toString方法,如果对象内没有toString方法就沿着原型链找toString方法。

  

//没放toString的结果    let o = Symbol({        name: 'zzh'    });    console.log(o);//Symbol([object Object])    //有toString方法的结果    let s = Symbol({        name: 'zzh',        toString: function(){            return 'age 18'        }    });    console.log(s.name);//Symbol(age 18)

  

  Symbol属性具备唯一性。

  

let o = Symbol('a');    let s = Symbol('a');    console.log(o == s);//false    //Symbol与NaN很象谁都不等于   
   let obj = {
     [o]: 's1',
       [s]: 's2'
   }
  console.log(obj)//{Symbol(a): "s1", Symbol(a): "s2"}
  // 两个名字一样,验证了Symbol的唯一性
 

   

  取值方法:

    

let o = Symbol('a');    let s = Symbol('a');    let obj = {        [o]: 's1',        [s]: 's2'    }    console.log(obj[o])//s1    console.log(obj[s])//s2    // 取值方法object[name]

  

   Symbol.iterator属性:
 
  
console.log(Symbol.iterator);//Symbol(Symbol.iterator) 等同于 Symbol('Symbol.iterato');//Array Set Map arguments nodelist等都有Symbol.iterator属性

  

  

 

转载于:https://www.cnblogs.com/set-promise/p/10810715.html

转载地址:https://blog.csdn.net/weixin_30624825/article/details/98948113 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:在 SQL 中 快速 批量 插入数据的方法
下一篇:php的一些问题

发表评论

最新留言

留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月07日 02时16分29秒