es6新增数据类型

symbol

symbol是基本数据类型,每一个symbol值都是一个全局唯一的字符串,你永远不会知道它里面存的什么,symbol值可以作为对象的属性的键。

总结:

  1. window.Symbol()
  2. Symbol()前面不能加new
  3. Symbol() !== Symbol()
  4. object[Symbol()]='xxx' 可以作为对象的键,创造私有属性

symbol作用:
可以造一个隐藏属性
使用方法:在一个块级作用域里使用symbol

{
    let a = Symbol()
    let object = {
        name: 'ooo',
        age: 10,
        [a]: '隐藏属性'
    }
    window.object = object
}

es6新增数据类型_第1张图片

上面的代码我们可以访问到它里面的name和age但是我们不能访问到a,包括我们直接通过object[Symbol]也访问不到它

Set

set类型是Object里面的一种
Set对象里面只要有重复的值他都会只保留一个,无论是原始值还是对象引用。

es6新增数据类型_第2张图片

作用:实现数组去重

  • 不使用Set实现数组去重
var a = [1,2,3,1,5,6,2]
function uniq(array){
    var result = []
    var hash = {}
    for(var i =0;i

问题:
1.他无法区分数字和字符串
2.如果数组里面有对象我们的去重方法就会失败,因为对象里面的下标(键)只能是字符串

  • 使用Set实现数组去重

es6新增数据类型_第3张图片

其中Array.from是将任意类型转化成一个数组

Map

可以允许任何类型作为对象的键,弥补了object只能使用字符串作为键的问题

es6新增数据类型_第4张图片

  • 通过for...of进行遍历
    .keys()拿到所有的key
for(let key of map.keys()){
    console.log(key)
}

.values()拿到所有的value

for(let key of map.values()){
    console.log(key)
}

.entries()拿到所有的key和value

for(let key of map.entries()){
    console.log(key)
}

es6新增数据类型_第5张图片

weakSet和WeakMap是弱引用,放在它们的key里面的东西会自然消失,它无法知道自己有哪些值

 



作者:sweetBoy_9126
链接:https://www.jianshu.com/p/61da27746d9a
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

你可能感兴趣的:(es6)