Symbol()数据类型深入理解

本文详细探讨了JavaScript中的Symbol数据类型,包括其作为原始数据类型的特点、基本用法如Symbol()、Symbol.for()及Symbol.keyFor(),并举例说明如何避免对象属性冲突。此外,还介绍了Symbol在遍历和静态方法中的应用,以及Symbol内置属性中的Symbol.hasInstance的理解,帮助读者深入理解Symbol在实际开发中的作用。
摘要由CSDN通过智能技术生成

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>
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值