首页 > 其他分享 >js 数据类型 Symbol

js 数据类型 Symbol

时间:2022-11-06 11:56:46浏览次数:56  
标签:数据类型 Symbol id2 js let key 全局 id

唯一的标识符

有两种原始类型可以作为对象的键(key):1、字符串,2、Symbol()。
用法:

  • Symbol('描述') 创建Symbol类型值
  • Symbol.description 获取Symbol描述
let id = Symbol('1');  // 括号是描述,即这个标识符的名字,
// 获取描述  id.description  // '1'
Symbol('1') === Symbol('1')  // false 

作用:向对象里添加一个唯一的key名。

“忍者:隐藏属性”
比如第三方代码的对象,你想添加另外的属性,但第三方代码中有可能会设置了本来预设的对象key值,如果你通过Symbol作为key值,就会变成一个“隐藏属性”,就不会被意外访问和重写了
Symbol作为key,即起到隐藏符号属性,会在 for in 以及 Object.keys() 不会被遍历出来。
但是在通过Objcet.assgin(),会同时复制字符串和Symbol的属性

Symbol 全局注册表

  • Symbol.for()
    通过Symbol.for() 按名字返回一个Symbol 。如果没有将被创建(在注册表中注册),通过描述名就可以取到相同的Symbol了,(查找和创建全局功能)
    如果需要取到同一个Symbol,就通过全局注册Symbol.for注册,使用Symbol.for就会获取到同一个Symbol
let id = Symbol.for('id'); 
let id2 = Symbol.for('id')
id == id2 // true
  • Symbol.keyFor()
    Symbol.KeyFor()按Symbol返回一个名字。但仅限在全局中查找Symbol,如果在全局中没有则返回Undefined。(不适用于非全局 symbol)
let id = Symbol('id')
let id2 = Symbol.for('id2')
let a = Symbol.keyFor(id) // undefined
let b = Symbol.keyFor(id2) // id2

标签:数据类型,Symbol,id2,js,let,key,全局,id
From: https://www.cnblogs.com/lazyxlai/p/16862294.html

相关文章

  • 复习 - node.js(接口案例)
    其实复习一次的作用真实太大了,真的,自从上次ajax开始其实就开始i有点懵懵懂懂的感觉,一直拖想到了node在去回顾一遍,这一次回去复习,ajax已经很熟练了,node之前搞不懂那些原理也......
  • SQL Server – Work with JSON
    前言JSON是一个很好的格式,array,object就能表达一个表格了.如果想保存一些结构格式,又不想用表格这么大费周章的话,JSON会是很好选择.比如我用它来记入AuditT......
  • EF Core – JSON Column
    前言SQLServer支持JSON,以前写过一篇介绍 SQLServer–WorkwithJSON.但EFCore一直没有支持.直到EFCore7.0才支持. 参考Docs–JSONColumns 配......
  • EFCore使用JSON_VALUE查询json对象的值
    IntroSqlServer从2016开始支持JSON操作,可以使用JSON_VALUE查询JSON对象的某个属性值,更多介绍,现在公司的一些项目主要是使用EFCore,手写sql较少,针对比较简单的......
  • C语言初级阶段6——自定义数据类型
    C语言初级阶段6——自定义数据类型阐述1.构造数据类型:用户自己建立的数据类型(自定义数据类型)。2.C语言中的自定义数据类型:数组类型、结构体类型、共用体类型和枚举类型......
  • JS中JSON.parse()方法解析失败的问题
    今天在安卓开发(安卓内嵌cordova,页面采用js+html编写)的过程中,出现了一个问题:      result=JSON.parse(result); 该方法抛出异常:JSON解析失败。在对......
  • etherjs调用合约过程
    前言:调用合约成功,虽然是一小步,但总算有进展了,慢慢往前。  //library是providerconst{account,library,active}=useWeb3React();//取消挂单asyncfun......
  • 兼容ie8的Html+Css+Js
    1<!DOCTYPEhtml>2<htmllang="en">34<head>5<metacharset="UTF-8">6<metahttp-equiv="X-UA-Compatible"content="IE=edge">7<meta......
  • Extjs复习笔记(十七)-- 给grid里面的内容分组
    From: https://www.likecs.com/show-203524189.html 给grid里面的内容分组。 Ext.onReady(function(){Ext.QuickTips.init();//开启浮动汽泡提示功能var......
  • EXTJS学习笔记:grid之分组实现groupingview
    使用extjs开发时常会用到grid来显示数据等操作,Extjs中Grid主要分为以下二类:  一、gridview   二、groupingview   gridview在前面已说过,在这里我来说说groupin......