Symbol的基本使用

43 篇文章 4 订阅
本文介绍了ES6中的Symbol数据类型,用于创建独一无二的属性值,避免对象属性名冲突。Symbol通过Symbol函数生成,每次调用都会返回不同的值。可以作为对象属性,使用三种方式设置:直接赋值、Object.defineProperty和对象字面量。此外,Symbol.for和Symbol.keyFor用于创建和查找具有相同值的Symbol。Symbol在确保对象属性唯一性方面起到关键作用。
摘要由CSDN通过智能技术生成

Symbol是一种通过Symbol函数来生成的独一无二的值,可以作为对象属性名。

在ES6之前,对象的属性都是字符串,在ES6添加了Symbol的基本数据类型之后,就可以使用Symbol作为对象的属性值了。

1.为什么需要使用Symbol?

在ES6之前,对象的属性名都是字符串形式,很容易造成属性名的冲突

比如原来有一个对象,我们希望在其中添加一个新的属性和值,但是我们在不确定它原来内部有什么内容的情况下,很容易造成冲突,从而覆盖掉它内部的某个属性

Symbol就是为了解决上面的问题,来生成一个独一无二的值。

  • Symbol值是通过Symbol函数来生成的,生成后可以作为属性名;
  • 在ES6中,对象的属性名可以使用字符串,也可以使用Symbol值。

Symbol即使多次创建值,它们也是不同的:Symbol函数执行后每次创建出来的值都是独一无二的; 我们也可以在创建Symbol值的时候传入一个描述description:这个是ES2019(ES10)新增的特性;

2.Symbol作为属性名

const s1 = Symbol()
      const s2 = Symbol("cba")
      
      const obj = {}
      //写法一: 属性名赋值
      obj[s1] = "abc"
      obj[s2] = "cba"

      console.log(obj[s1]);
      console.log(obj[s2]);

      // 写法二: Object.defineProperty
      Object.defineProperty(obj, s1, {
        enumerable: true,
        configurable: true,
        writable: true,
        value: "abc"
      })

      // 写法三: 定义字面量是直接使用
      const info ={
        [s1]: "abc",
        [s2]: "cba"
      }

3.相同值的Symbol

如果我们想要创建一个值相同的Symbol值怎么做

  • 我们可以使用Symbol.for方法来做到这一点;
  • 并且我们可以通过Symbol.keyFor方法来获取对应的key。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

至尊绝伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值