首页 > 其他分享 >symbol的基本使用

symbol的基本使用

时间:2023-03-02 22:45:31浏览次数:29  
标签:基本 const log symbol console 使用 obj Symbol

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里面的值

标签:基本,const,log,symbol,console,使用,obj,Symbol
From: https://www.cnblogs.com/ffhyy/p/17173104.html

相关文章

  • 如何使用Blender制作卡通三渲二效果
    推荐:将 ​​NSDT场景编辑器​​ 加入你的3D开发工具链。  今天来分享一个在Blender中实现简单卡通三渲二效果和卡通描边的方法,基础的卡通三渲二效果在Blender中还是很简......
  • unixODBC 不使用GUI配置数据源
     {PurposeAlotofpeopleareusingunixODBCbutforanumberofreasonsarenotbuildingtheGUIconfigurationandtestingtools(ODBCConfigandDataManage......
  • Pandas使用时间索引筛选时报错 AssertionError: <class 'numpy.ndarray'>
    Icameacrossthesimilarproblem,mysolutionwas:makesuretheindexistypeof'DatetimeIndex',Idothis:df.index=pd.to_datetime(df.index)sortedth......
  • 实验1 C语言开发环境使用和编程初体验
    实验任务1程序源代码:task1_1#include<stdio.h>intmain(){printf("0");printf("0\n");printf("<H>");printf("<H>\n");......
  • Vue在开发中的实战使用
    Vue在开发中的实战使用解决SPA单页应用首屏加载慢首屏时间(FirstContentfulPaint),指的是浏览器从响应用户输入网址地址,到首屏内容渲染完成的时间,此时整个网页不一定要全......
  • 使用ansible部署服务到k8s
    使用ansible部署服务到k8s#概述主要功能:镜像构建与推送到私有镜像仓库环境初始化(创建namespace、储存卷、驱动等)部署监控(prometheus、grafana、loki)部署服务......
  • mysql数据库的复制过虑器和mycat的安装使用
    今天分享的是mysql数据库的复制过滤器,其中包括GTID复制以及监控和维护,还有MYCAT的安装及其使用mycat使用过程中所需要注意的事项复制过滤器GTID复制GTID配置范例主服务器vim......
  • 数据库和表的基本操作
    1.进入mysql:“mysql-uroot-p123456”2.创建数据库:“createdatabase数据库名称;”3.查看数据库名称:“showdatabase;”4.查看已经创建的数据库信息:“showcreatedat......
  • LESS 快速使用入门指南简介
    LessCSS是一个使用广泛的CSS预处理器,通过简单的语法和变量对CSS进行扩展,可减少很多CSS的代码量。LESS将CSS赋予了动态语言的特性,如变量、继承、运算、函数......
  • git使用
    git1.git介绍#代码管理软件 gitsvn#作用--用来做代码管理【文件管理】 1.帮助开发者合并开发代码协同开发2.如果出现冲突代码的合并会提示后提交合......