你想要的一眼就知道的【Symbol】

2023-10-27

js的基本数据类型

基本类型:String,Boolean,Number,Symbol,Undefind,Null
引用类型:Array,Object,Function

Symbol

  • 什么是Symbol?
    • 是js语言的一种数据类型,和String,Number一样。
  • 为什么要用Symbol?
    • Symbol的作用: ES6引入,生成一个随机的且独一无二的值
    • Symbol的使用场景:Symbol 包装器对象作为属性的键; 举个栗子: 你想在一个已存在的对象中添加属性,但是不知道该对象里有哪些属性,为避免属性名命名重复,可以使用Symbol来生成一个独一无二的属性名。
  • 怎么使用symbol?
    • 如何生成这个值:let a = Symbol('s11'),或者let a = Symbol.for('s11')
      Symbol()和Symbol.for()的区别,代码借鉴MDN:
      Symbol.for("foo"); // 创建一个 symbol 并放入 symbol 注册表中,键为 "foo"
      Symbol.for("foo"); // 从 symbol 注册表中读取键为"foo"的 symbol
      
      Symbol.for("bar") === Symbol.for("bar"); // true,证明了上面说的
      Symbol("bar") === Symbol("bar"); // false,Symbol() 函数每次都会返回新的一个 symbol
      
      let a = Symbol('a');
      a === Symbol.for('a'); // false
      
      var sym = Symbol.for("mario");
      sym.toString(); 
      // "Symbol(mario)",mario 既是该 symbol 在 symbol 注册表中的键名,又是该 symbol 自身的描述字符串
      
      //为了防止冲突,最好给你要放入 symbol 注册表中的 symbol 带上键前缀。
      Symbol.for("mdn.foo");
      Symbol.for("mdn.bar");
      
    • 如何取到这个属性名:无法用for...in,for...of进行属性名遍历,无法用Object.keys()Object.getOwnPropertyNames()获取属性。可以用Objrect.getOwnPropertySymbols()获取。
      let a = Symbol('a');
      let b = Symbol('b');
      let obj = {};
      obj[a] = 'valueA';
      obj[b] = 'valueB';
      obj[Symbol('d')] = 'valueD'
      let objKeyList = Object.getOwnPropertySymbols(obj);
      console.log(objKeyList.length); // => 2
      console.log(objKeyList); // => [ Symbol(a), Symbol(b) ]
      console.log(a===Symbol.for('a'))
      
      console.log(JSON.stringify({[Symbol('c')]:'value'})) // {}
      console.log(JSON.stringify(obj[Symbol('c')])) // => undefined
      console.log(obj[a]) // => valueA
      console.log(obj[Object(a)]) // => valueA
      console.log(obj[Symbol('d')]) // => undefined ; 因为每次Symbol()都是新生成一个值,此处的Symbol('d')和上面不是同一个
      
      
    • 如何取到该属性值:上面代码obj[a]obj[Object(a)]就可以获取到属性值,变量a已经存储了固定的属性名,但如果用obj[Symbol('d')]就会重新生成一个属性名。
  • 深度了解symbol(待更新)
    …todo…
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你想要的一眼就知道的【Symbol】 的相关文章

随机推荐

  • 单链表的插入和删除

    前言 在上一篇文章 单链表的定义 中我们已经了解了单链表的含义和简单的实现 那么在这篇文章中 我们将要来讲解单链表的插入和删除操作 按位序插入 带头结点 我们在上篇文章中已经讲解过 如果想要在表L中的第i个位置上插入指定元素e 我们需要找到
  • 认识爬虫:提取网站 cookie 信息,并使用 cookie 信息实现登录

    为什么要使用 cookie 信息来进行爬虫呢 做后端的朋友们都知道 一般情况下 在服务器上发布接口都是要设置身份信息验证 验证的方式就是通过 cookie 信息中包含的身份认证来进行验证 在身份验证通过之后 才能获取到响应接口的信息 所以
  • 实现锚点-scroll平滑滚动

    a链接锚点定位太生硬 试试自己让滚动条平滑滚动把 scroll2 target gt console log alb console log 滚动拉 target target target aaa className const scro
  • 使用动态规划解决分钱方案-2023年全国青少年信息素养大赛Python复赛真题精选

    导读 超平老师计划推出 全国青少年信息素养大赛Python编程真题解析 50讲 这是超平老师解读Python编程挑战赛真题系列的第14讲 全国青少年信息素养大赛 原全国青少年电子信息智能创新大赛 是 世界机器人大会青少年机器人设计与信息素养
  • ajax append进来的图片闪一下就不见了,用FileReader做图片上传时遇到的一个异步问题...

    send box send img file send img file 2 detach for var i 0 i var file e target files item i 允许文件MIME类型 也可以在input标签中指定acce
  • Python的seaborn库内置数据集的使用

    iris sns load dataset iris 当调用seaborn内置数据集时 如果会出现以下报错的情况 表示该内置数据没有下载到本地文档 进入以下网站 https github com mwaskom seaborn data 下
  • Modulated Graph Convolutional Network for 3D Human Pose Estimation

    论文主要改进普通图卷积的两个缺点 共享每个图卷积之间的特征变换 阻止了他们学习不同节点之间的不同关系 而且图是根据人体骨骼定义的 人类活动往往会表现出超出身体关节自然连接的运动 例如跑步时胳膊和腿之间的联系 论文提出了权重调节和亲和力调节
  • 用Python绘制漫天繁星

    用Python绘制漫天繁星 一闪一闪亮晶晶 漫天都是小星星 想要用python绘制漫天星星吗 本篇文章小编来教大家如何使用python绘制星星 话不多说 进入正题 一 理清思路 星星出现在画布的随机位置 即位置随机 星星有的大有的小 即大小
  • SQL SERVER -SCD Solution

    看下SQL SERVER中 对SCD的解决方案 不看SQL SERVER 2008 CDC方法 摘自 expert sql server 2005 integration services 在这里介绍的SCD TYPE0 1 2与KIM B
  • 浅谈IDEA+Maven 整合SSM框架实现简单的增删改查

    SSM SSM Spring SpringMVC MyBatis 框架集由Spring MyBatis两个开源框架整合而成 SpringMVC是Spring中的部分内容 常作为数据源较简单的web项目的框架 Spring Spring就像是
  • Eolink 出席 QECon 大会,引领「AI+API」技术的革新浪潮

    7月28日 29日 第八届 QECon 质量效能大会在北京成功召开 大会聚焦 数生智慧 高质量发展新引擎 深入探讨如何利用数字化和智能化技术推动软件质量的发展 进而为高质量的经济发展提供新的引擎 作为国内 API 全生命周期解决方案的领军者
  • python通过input()函数输入的内容是什么类型

    说明 通过input 函数 可以从标准输入读取内容 那么读到的内容是什么类型呢 通过type 函数可以进行判断 另外 通过input 函数的官方解释 从标准输入读取一个字符串 所以 应该是字符串类型 在此验证下 操作过程 1 input 结
  • 最大差值

    题目描述 HKE最近热衷于研究序列 有一次他发现了一个有趣的问题 对于一个序列A 1 A 2 cdots A nA1 A2 An 找出两个数i ji j 1 leq i
  • 【计网】5.链路层:链路、接入网和局域网

  • mysql关联n张表_mysql left join 左连接查询关联n多张表

    最近用mysql 多表关联查询比较多 特此总结一下left join用法 拓展下left join将多表关联 left join 左连接即以左表为基准 显示坐标所有的行 右表与左表关联的数据会显示 不关联的则不显示 关键字为left joi
  • C++ 类的静态成员详解【static】

    目录 前言 一 类的静态成员 1 static关键字 2 静态成员变量 3 静态成员函数 二 程序样例 1 程序演示 2 程序截图 总结 前言 本文记录C 中 static 修饰类成员成为静态成员 其中包括静态成员类别 作用和程序演示 嫌文
  • Mysql在Mac终端以及Navicat 的基本操作

    1 进入MySQL 打开终端 输入 usr local MySQL bin mysql u root p 其中 root为数据库用户名 输入密码后 密码输入不会被显示 2 接下来就可以对数据库进行操作了 创建数据库 create datab
  • 【ML&DL】【skimming】The Loss Surfaces of Multilayer Networks

    补了一下Yann LeCun的经典工作The Loss Surfaces of Multilayer Networks 1 论文一览 痛点 文章假设并且陆续证明了这样一些事情 1 对于大网络 large size network 而言 绝大
  • 学生写字灯哪个牌子好?精选学生专用台灯第一品牌

    每个孩子的成长都是父母的心头大事 不管是学习上 身体上都想给予孩子最好的 甚至学习也会买台灯 光源的选择也是很重要的 学生在写字的时候用什么台灯牌子比较好呢 今天就来详细介绍一下 几款护眼的学生台灯 一 南卡护眼台灯L1 参考价 399元
  • 你想要的一眼就知道的【Symbol】

    js的基本数据类型 基本类型 String Boolean Number Symbol Undefind Null 引用类型 Array Object Function Symbol 什么是Symbol 是js语言的一种数据类型 和Stri