symbol和Biglnt的基本使用

Symbol是什么

  • Symbol是ES6中新增的一个基本数据类型,翻译为符号。
  • 在ES6之前,对象的属性名都是字符串形式,那么很容易造成属性名冲突;
    • 比如原来有一个对象,我们希望在其中添加一个新的属性和值,但是我们在不确定它原来内部有什么内容的情况下,很容易造成冲突,从而覆盖掉它内部的某个属性;
    • 或者开发中我们使用混入,那么混入中出现了同名的属性,必然有一个会被覆盖掉。
  • 使用sumbol会生成一个独一无二的值,永远不会覆盖前面的值
    • symbol的值是通过symbol函数来生成的,生成后可以作为属性名;
    • 对象的属性名可以使用字符串,也可以使用symbol值;
    •       const a = Symbol(); //调用symbol
            const b = Symbol();
            const obj = {
              [a]: 1, //将a作为obj的键
            };
            obj[b] = 2; //将b作为obj的键
            console.log(obj); //输出对象

       

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

获取symbol对应的key

  •    console.log(Object.keys(obj)); //获取不到symbol
          console.log(Object.getOwnPropertySymbols(obj)); //单独获取symbol数组
          const Symbolkeys = Object.getOwnPropertySymbols(obj); //得到sumbol键的值
          for (const key of Symbolkeys) {
            console.log(obj[key]);
          }

     

创建相同的Symbol

  • 我们可以使用Symbol.for来做到这一点
  • 并且可以通过Symbol.keyFor方法来截取对应的key
  •     const s3 = Symbol("ccc");//ccc是symbol的一个解释
          console.log(s3.description); //得到s3里面的ccc
          const s4 = Symbol.for("aa");
          const s5 = Symbol.for("aa");
          console.log(s4 == s5); //得到true
          console.log(Symbol.keyFor(s5));//得到s5里面的值

biglnt是什么

  • 在早期的javascript中,我们不能正确的使用过大的数字
    • 大于MAX_SAFE_INTEGER的数值,表示的可能是不正确的。
  • 在ES11中,引入了新的数据类型Bigint,用于表示大的整数
    • Biglnt的表示方法是在数值的后面加上n
    •     const max = Number.MAX_SAFE_INTEGER;
            console.log(max); //得到 9007199254740991
            console.log(max + 2); //得到 9007199254740992;正确是//得到 9007199254740993
            const max1 = 9007199254740993; //得到 9007199254740991;
            const max2 = 9007199254740993n; //得 9007199254740993n;
            console.log(max1, max2);

       

posted @   biu~a  阅读(90)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示