ES6之Symbol

ES6中为我们新增了一个原始数据类型Symbol,让我为大家介绍一下吧!
Symbol它表示是独一无二的值
Symbol要如何创建
第一种创建方式:

    let sy = Symbol()

第二种创建方式:

    let sy = Symbol.for()

具体独一无二在哪呢?它们的地址不相同。

    let sy = Symbol("name")let sy1 = Symbol("name")console.log(sy === sy1) //false

但如果我们使用Symbol.for创建

    let sy = Symbol.for("name")let sy1 = Symbol.for("name")console.log(sy === sy1) // true

Symbol不能与其他数据进行运算

    let sy = Symbol()console.log(sy + 1) //报错console.log(sy > 1) //报错console.log(sy + "1") //报错

Symbol可以作用在哪呢?
用来定义对象的私有变量
如何写入对象?
第一种:

    let sy = Symbol("sy1")const obj = {}obj[sy] = "私有的"console.log(obj)

第二种:

    let sy = Symbol("sy1")const obj = {[sy] : "私有的"} console.log(obj)

第三种添加的键值:

    const obj = {sy : Symbol("私有的")} console.log(obj)

在这里插入图片描述
我们可以用keyFor来获取Symbol.for()创建的值

    let sy = Symbol.for("hello")console.log(Symbol.keyFor(sy))//hello

我们怎么获取呢?可以使用 对象[ ]的方法取到
记住取Symbol的值时,不能用点(.)取

//获取成功
console.log(obj[sy]) //私有的

我们用点(.)取值试一下,取到undefined

console.log(obj.sy) //undefined

我们该如何循环取到Symbol
我们用对象的for in方法试一试
由此可见,取不到Symbol

    let sy = Symbol("hello")const obj = {name:"张三",age:18,}obj[sy] = "私有的"for(let k in obj) {console.log(obj) //{name: '张三', age: 18, Symbol(hello): '私有的'}console.log(k) //name ageconsole.log(obj[k]) //张三 18}

我们使用getOwnPropertySymbols()

    let sy = Symbol("hello")const obj = {name:"张三",age:18    }obj[sy] = "私有的"let a = Object.getOwnPropertySymbols(obj)console.log(a)

在这里插入图片描述

感谢大家的阅读,如有不对的地方,可以向我指出,感谢大家!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/215637.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年【T电梯修理】复审考试及T电梯修理模拟考试题

题库来源:安全生产模拟考试一点通公众号小程序 2023年T电梯修理复审考试为正在备考T电梯修理操作证的学员准备的理论考试专题,每个月更新的T电梯修理模拟考试题祝您顺利通过T电梯修理考试。 1、【多选题】《特种设备安全法》规定:特种设备安…

大一作业习题

第一题&#xff1a;答案&#xff1a; #include <stdio.h> void sort(int a[], int m) //将数组a的前m个元素(从小到大)排序 {int i 0;for (i 0; i < m - 1; i){int j 0;int flag 1;for (j 0; j < m - 1 - i; j){if (a[j] > a[j 1]){int t 0;t a[j];…

供配电运维智能监控系统

供配电运维智能监控系统是一种针对供配电系统的智能监控设备&#xff0c;依托电易云-智慧电力物联网&#xff0c;旨在实现对供配电系统的实时监控、数据记录和分析&#xff0c;以及异常预警和故障检测等功能&#xff0c;以提高供配电系统的可靠性和稳定性。 该系统通常由以下部…

Linux下C++静态链接库的生成以及使用

目录 一.前言二.生成静态链接库三.使用静态链接库 一.前言 这篇文章简单讨论一下Linux下如何使用gcc/g生成和使用C静态链接库&#xff08;.a文件&#xff09;。 二.生成静态链接库 先看下目录结构 然后看下代码 //demo.h#ifndef DEMO_H #define DEMO_H#include<string&g…

24款CBR600RR复活,CBR1000R电控下放,有望引进?

最近本田在欧洲市场亮相了停产已经6年的24款本田CBR600RR&#xff0c;传说中的F5复活了&#xff01;24款CBR采用了全新的外观设计&#xff0c;可以看到前面也加上了流行的定风翼&#xff0c;不过设计是娇小一点的&#xff0c;另外本田的CBR600RR也是唯一在售的采用尾排设计的仿…

2017下半年软工(桥接模式)

题目——桥接模式&#xff08;抽象调用实现部分&#xff09; package org.example.桥接模式;/*** 桥接模式的核心思想是将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化&#xff0c;就是说你在实现部分&#xff1a;WinImp、LinuxImp基础上还能加上RedHatImp&#…

zabbix6入门到精通(3) 预处理

zabbix6入门到精通&#xff08;3&#xff09; 预处理 配置 — 主机 文件系统主项目 vfs.fs.get 测试一下 添加预处理 $[?(.fsname ‘/’)] $[0].inodes.pfree JSONPath参照&#xff1a; https://www.zabbix.com/documentation/6.0/zh/manual/config/items/preprocessi…

基于Git的代码工程管理——学习记录一

一、Git简概[1] Git是一个分布式版本控制系统&#xff0c;它跟踪任何一组计算机文件的更改&#xff0c;通常用于在软件开发过程中协调协作开发源代码的程序员之间的工作。其为实现快速、数据完整性以及分布式非线性工作流程&#xff08;在不同计算机上运行数千个并行分支&#…

C# Convert.ToBoolean()字符串转布尔类型问题

文章目录 C# Convert.ToBoolean()字符串转布尔类型问题错误写法&#xff1a;Convert.ToBoolean("0") or Convert.ToBoolean("1")正确写法Convert.ToBoolean("true") or Convert.ToBoolean("false") C# Convert.ToBoolean()字符串转布尔…

Bat批处理知识点总结

批处理注释 rem 注释内容&#xff08;不能出现重定向符号和管道符号&#xff09;> nul echo 注释显示内容&#xff0c;类似于print&#xff08;不能出现重定向符号和管道符号&#xff09;> nul纯批处理延迟毫秒 rem 开始延迟1秒 call :delay 1000 rem 延迟结束::-------…

2、Redis变慢原因排查(下)

感觉Redis变慢了&#xff0c;这些可能的原因你查了没 &#xff1f;(下) Redis变慢排查的上一篇【感觉Redis变慢了&#xff0c;这些可能的原因你查了没 &#xff1f;(上)】&#xff0c;我们是基于Redis命令为入口&#xff0c;比如命令使用不得当&#xff0c;bigkey问题&#xf…

【Hive】——CLI客户端(bin/beeline,bin/hive)

1 HiveServer、HiveServer2 2 bin/hive 、bin/beeline 区别 3 bin/hive 客户端 hive-site.xml 配置远程 MateStore 地址 XML <?xml version"1.0" encoding"UTF-8" standalone"no"?> <?xml-stylesheet type"text/xsl" hre…

Ajax跨域请求

最近使用js构造请求时发生了CORS跨域问题&#xff0c;mark一下 ajax跨域&#xff0c;这应该是最全的解决方案了 | Dailc的个人主页Everything about dailchttps://dailc.github.io/2017/03/22/ajaxCrossDomainSolution.htmlAJAX - 廖雪峰的官方网站研究互联网产品和技术&#…

Java - JVM内存模型及GC(垃圾回收)机制

JVM内存模型 JVM堆内存划分&#xff08;JDK1.8以前&#xff09; JVM堆内存划分&#xff08;JDK1.8之后&#xff09; 主要变化在于&#xff1a; java8没有了永久代&#xff08;虚拟内存&#xff09;&#xff0c;替换为了元空间&#xff08;本地内存&#xff09;。常量池&#…

.NET Core 依赖注入 Microsoft.Extensions.DependencyInjection

文章目录 前言什么是依赖注入C# 使用依赖注入框架介绍 Microsoft.Extensions.DependencyInjectionNuget安装简单单例使用打印结果 自动装配举例自动装配测试用例打印结果自动装配执行顺序测试用例有歧义构造函数渐进式构造函数循环依赖 自动装配结论 手动装配手动注入别名注入 …

【AIGC】大语言模型的采样策略--temperature、top-k、top-p等

总结如下&#xff1a; 图片链接 参考 LLM解码-采样策略串讲 LLM大模型解码生成方式总结 LLM探索&#xff1a;GPT类模型的几个常用参数 Top-k, Top-p, Temperature

如何使用玻璃材质制作3D钻石模型

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时&#xff0c;有几种不同的风格&#xf…

【Matlab算法】粒子群算法求解二维非线性优化问题(附MATLAB代码)

粒子群算法求解二维非线性优化问题 前言正文步骤分解代码可视化完整代码实现 前言 二维非线性优化问题是指在二维空间中寻找一个点&#xff0c;使得目标函数在该点取得最小&#xff08;或最大) 值&#xff0c;而这个目标函数是一个非线性函数。数学上&#xff0c;这类问题可以…

《Vue.js设计与实现》—Vue3响应系统的原理

一、响应式数据与副作用函数 1. 副作用函数 1-1 指令材料 在JavaScript中&#xff0c;副作用函数是指在执行过程中对外部环境产生可观察的变化或影响的函数。这种函数通常会修改全局变量、修改传入的参数、执行I/O操作&#xff08;如读写文件或发送网络请求&#xff09;、修…

计算目标检测和语义分割的PR

需求描述 实际工作中&#xff0c;相比于mAP项目更加关心的是特定阈值下的precision和recall结果&#xff1b;由于本次的GT中除了目标框之外还存在多边形标注&#xff0c;为此&#xff0c;计算IoU的方式从框与框之间变成了mask之间&#xff1b; 本文的代码适用于MMDetection下的…