ES6 Symbol

目录

介绍

本文是在学习ES6时做的一些学习笔记,所有的笔记请查看:ES6 学习笔记

Symbol

Symbol 是一种基本数据类型 (primitive data type)。
每个从Symbol()返回的symbol值都是唯一的。一个symbol值能作为对象属性的标识符;这是该数据类型仅有的目的。

Symbol()函数会返回symbol类型的值,该类型具有静态属性和静态方法。它的静态属性会暴露几个内建的成员对象;它的静态方法会暴露全局的symbol注册,且类似于内建对象类,但作为构造函数来说它并不完整,因为它不支持语法:“new
Symbol()”。

Symbol()定义的属性是不能遍历的,可以用来构造私有属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Symbol</title>
  
</head>

<body>
<script>
// 如下所示,当对象中有两个相同的属性名时,属性会被合并
const classRoom ={
    'Lily': { grade: 60,gender: 'female'},
    'Nina': { grade: 80,gender: 'female'}
    'Nina': { grade: 90,gender: 'female'}
}

// 如下,使用Symbol()标志,此时'Nina' 就不会被合并
const classRoom ={
    [Symbol('Lily')]: { grade: 60,gender: 'female'},
    [Symbol('Nina')]: { grade: 80,gender: 'female'}
    [Symbol('Nina')]: { grade: 90,gender: 'female'}
}

// 当对象属性是Symbol时,是不能进行遍历的
// 如下,就不能进行遍历
for(let key in classRoom){
    console.log(key)
}

// 使用如下方法遍历对象的属性
const syms= Object.getOwnPropertySymbols(classRoom);
// 输出各个属性名,Symbol('Lily')、Symbol('Nina')、Symbol('Nina')
console.log(syms)

syms.map(sym=>classRoom[sym]) // 获取属性值

</script>

</body>
</html>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值