JavaScript Symbol 对象的理解与使用

Symbol

唯一值,用于防止属性名冲突
  • 使用Symbol()来创建值不会进行记录,所以无论值看起来是否一样都不会引用同一份内存地址。

没有构造函数,直接使用

let sybl = Symbol()
let syblObject = {
    [sybl]: "通过唯一值创建"
}

可作为私有变量

不想被 for/in、for/of 遍历操作找到时可使用Symbol,若想找到时需使用

Reflect.ownKeys(syblObject)
Object.getOwnPropertySymbols(syblObject)

可添加描述信息

let sybl = Symbol("描述信息");  
console.log(sybl.description);  // 描述信息

可记录内存地址

使用Symbol.for()来创建值,下次再创建相同的值时会直接引用记录的内存地址。

let sybl1 = Symbol.for("记录内存地址");  
let sybl2 = Symbol.for("记录内存地址");
console.log(sybl1 === sybl2);  // true

console.log(sybl1.description); // 记录内存地址
// 等价于
console.log(Symbol.keyFor(sybl1)); // 记录内存地址

声明与访问

Symbol 声明和访问使用 [] 请勿使用 .

[]:操作变量属性
.: 操作字符串属性

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值