Symbol()数据类型深入理解

Symbol数据类型深入理解

之前学习过Symbol数据类型,但是仅仅是了解一些,没有过多深入了解。今天写这篇博客就是对这个数据类型的一些用法,以及内置属性的理解。

Symbol是一种原始数据类型,其创建之后会在栈内存中存在,并不会向引用值数据类型在堆内存中存在。其存在就是为了确保对象属性唯一,不会存在属性冲突。
一、基本用法
①Symbol()
<script>
let s1 = Symbol();
let s2 = Symbol();
console.log(s1===s2);   //false

let s3 = Symbol("2021");
let s4 = Symbol("2021");
console.log(s3===s4);   //false
</script>
②Symbol.for()
<script>
let s1 = Symbol.for("2021");
let s2 = Symbol.for("2021");
console.log(s1===s2);   //false
</script>

解析:Symbol()中,当创建一个实例,无论传给Symbol的值是否相同,都会在内存中新建一个Symbol实例。Symbol.for()中,当实例化一个对象,这个对象就会在Window中存在,也就类似于全局变量,此时就会从全局中找是否存在Symbol.for()相同的实例,如果存在,就返回原来值,如果不存在就新开辟一个内存空间。所以Symbol.for()为true。

③Symbol.keyfor()取出Symbol.for()中的key值
let s1 = Symbol.for("name");
let key = Symbol.keyFor(s1);
console.log(key);  //name
一个简单的Symbol例子
<script>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值