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
}

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

Set

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

作用:实现数组去重

  • 不使用Set实现数组去重
var a = [1,2,3,1,5,6,2]
function uniq(array){
    var result = []
    var hash = {}
    for(var i =0;i<array.length;i++){
        hash[array[i]]=true
    }
    for(key in hash){
        result.push(key)
    }
    return result
}
uniq(a)
//["1", "2", "3", "5", "6"]

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

  • 使用Set实现数组去重

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

Map

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

  • 通过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)
}

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

 



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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值