当前位置: 首页 > news >正文

ES6笔记-symbol

ES6 symbol 是什么

ES5的对象属性名是字符串,这容易造成属性名的冲突。symbol是一种机制,保证每个属性的名字都是独一无二的。这样就从根本上防止属性名冲突。

它是一种原始数据类型Symbol,表示独一无二的值。它属于javaScript语言的原生数据类型之一。其他数据类型是,undefinde,null, 布尔值(Boolean),字符串(String),数值(Number),大整数(BigInt),对象(object)

symbol值通过symbol()函数生成。这也就是说,对象的属性名现在可以有两种类型,一种是原来就有的字符串,另一种是新增的Symbol类型。凡是属性名属于Symbol类型,就都是独一无二的,可以保证不会与其他属性名产生冲突

Symbol()函数不能使用new命令 ,否则会报错。这是因为Symbol是一个原始类型的值,不是对象,所以不能用new命令来调用。Symbol值不是对象,所以也不能添加属性。基本上,它是一种类似字符串的数据类型

Symbol()函数的参数只是对当前Symbol值的描述,因此相同参数的Symbol函数返回值是不相等的

Symbol值不能与其他类型的值进行运算,会报错

Symbol()函数创建symbol值时,可以用参数添加一个描述

但是读取这个方法要将symbol显示转换为字符串

由于每一个symbol值都是不相等的,这意味着只要symbol值作为标识符,用于对象的属性名,就能保证不会出现同名属性。这对于一个对象由多个模块构成的情况非常有用,能防止某一个键不小心改写覆盖
属性名遍历

symbol值作为属性名,遍历对象的时候,该属性不会出现在for…in,for…of循环中,也不会被object.keys(),object.getownproppertyNames(),json.stringify()返回
但是它也是一个私有属性有一个object.getownPropertysymbols()方法,可以获取指定对象的所有symbol属性名。该方法返回一个数组,成员是当前对象的所有用作属性名的symbol值

reflect.ownkeys()方法阶梯返回所有类型的键名,包括常规键和symbol键名

有时我能希望使用同一个symbol值,symbol.for()方法可以做到这一点。它接受一个字符串作为参数,然后搜索没有以该参数作为名称的symbol值。如果有,就返回这个symbol值,否则就新建一个以该字符串为名称的symbol值,并将其注册到全局

symbol.for()与symbol()这两种写法都会生成新的symbol。它们的区别是,前者会被登记在全局环境中共搜索,后者不会。symbol.for()不会每次调用就返回一个新的symbol类型的值,而是会先检查给定的key是否已经存在,如果不存在才会新建一个值。

Symbol.keyFor()方法返回一个已登记的symbol类型的key

由于symbol没有登记机制,所以用symbol创建的会返回undefinde

相关文章:

ES6笔记-symbol

ES6 symbol 是什么 ES5的对象属性名是字符串,这容易造成属性名的冲突。symbol是一种机制,保证每个属性的名字都是独一无二的。这样就从根本上防止属性名冲突。 它是一种原始数据类型Symbol,表示独一无二的值。它属于javaScript语言的原生数据类型之一。…...

C++设计模式介绍:优雅编程的艺术

物以类聚 人以群分 文章目录 简介为什么有设计模式? 设计模式七大原则单一职责原则(Single Responsibility Principle - SRP)开放封闭原则(Open/Closed Principle - OCP)里氏替换原则(Liskov Substitution …...

GitLab升级版本(任意用户密码重置漏洞CVE-2023-7028)

目录 前言漏洞分析影响范围查看自己的GitLab版本升级路程 升级过程13.1.1113.8.8 - 14.0.1214.3.614.9.5 - 16.1.6 前言 最近GitLab发了个紧急漏洞需要修复,ok接到命令立刻着手开始修复,在修复之前先大概了解一下这个漏洞是什么东西 漏洞分析 1、组件…...

Unity——八叉树的原理与实现

八叉树原理 八叉树(Octree)是一种用于在三维空间中进行空间分割的数据结构。它将三维空间递归地划分为八个子空间,每个子空间对应于一个八叉树节点。这种分割方式可以有效地组织和管理场景中的对象,提高检索效率,特别…...

android 自定义软键盘的显示和隐藏

记一下,以后不用找在InputMethodService中有这两个方法可以看到软键盘显示状态 //软键盘隐藏 override fun onWindowHidden() {super.onWindowHidden() } //软键盘显示 override fun onWindowShown() {super.onWindowShown() } 在activity中可以通过这种方法看到软键盘显示状…...

基于openssl v3搭建ssl安全加固的c++ tcpserver

1 概述 tcp server和tcp client同时使用openssl库,可对通信双方流通的字节序列进行加解密,保障通信的安全。本文以c编写的tcp server和tcp client为例子,openssl的版本为v3。 2 安装openssl v3 2.1 安装 perl-IPC-Cmd openssl项目中的co…...

11.2 Web开发_CSS入门(❤❤)

11.2 Web开发_CSS入门❤❤ 1. CSS简介1.1 基础案例2. CSS书写的位置2.1 行内式2.2 内嵌式2.3 外链式3. CSS基础选择器3.1 标签选择器3.2 id选择器3.3 类选择器3.4 选择器优先级3.5 通配符选择器4. 多类名5. 样式的两种特性5.1 层叠性...

[docker] Docker的数据卷、数据卷容器,容器互联

一、数据卷(容器与宿主机之间数据共享) 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容…...

ATF(TF-A)安全通告TF-V11——恶意的SDEI SMC可能导致越界内存读取(CVE-2023-49100)

目录 一、ATF(TF-A)安全通告TFV-11 (CVE-2023-49100) 二、透过事务看本质SDEI是干啥的呢? 三、CVE-2023-49100 1、GICv2 systems 2、GICv3 systems 四、漏洞修复 一、ATF(TF-A)安全通告TFV-11 (CVE-2023-49100) Title 恶意的SDEI SMC可能导致越界内存读取&am…...

如何查找SpringBoot应用中的请求路径(不使用idea)

背景 昨天有个同事向我咨询某个接口的物理表是哪个,由于公司业务较多、这块业务的确不是我负责的,也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串),也就回复了不清楚。 除了自己写代码输出servlet的路径和类外,发现了一…...

56. 合并区间 - 力扣(LeetCode)

题目描述 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 题目示例 输入:intervals [[1,3…...

数据结构篇-03:堆实现优先级队列

本文着重在于讲解用 “堆实现优先级队列” 以及优先级队列的应用,在本文所举的例子中,可能使用优先级队列来解并不是最优解法,但是正如我所说的:本文着重在于讲解“堆实现优先级队列” 堆实现优先级队列 堆的主要应用有两个&…...

linux clickhouse 安装

1、官网下载clickhouse安装包 下载地址, clickhouse分lts和stable版本,lts是长期版本,一般选择安装lts版本。 其中clickhouse-server是clickhouse服务,就是用来访问数据存储数据,clickhouse-client是用来通过命令访问数…...

【游戏客户端开发的进阶路线】

*** 游戏客户端开发的进阶路线 春招的脚步越来越近,我们注意到越来越多的同学们都在积极学习游戏开发,希望能在这个充满活力的行业中大展拳脚。 当我们思考如何成为游戏开发领域的佼佼者时,关键在于如何有效规划学习路径。 🤔 我…...

vue3+naiveUI二次封装的v-model 联动输入框

根据官网说明使用 源码 <template><div class"clw-input pt-3"><n-inputref"input":value"modelValue":type"type":title"title"clearable:disabled"disabled":size"size"placeholder&…...

百度Apollo | 实车自动驾驶:感知、决策、执行的无缝融合

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏:《linux深造日志》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下…...

DAY31:贪心算法入门455、53、376

理论基础 贪心算法的基本思路是通过局部最优从而达到全局最优&#xff0c;但是有时候局部最优并不一定导致全局最优&#xff0c;这样就需要动态规划的方法。但一部分题目是能通过贪心得到的。贪心的证明一般用到数学归纳法和反证法。在实际的问题中&#xff0c;没有统一的代码…...

LeetCode:376.摆动序列

个人主页&#xff1a;仍有未知等待探索-CSDN博客 专题分栏&#xff1a;算法_仍有未知等待探索的博客-CSDN博客 题目链接&#xff1a;376. 摆动序列 - 力扣&#xff08;LeetCode&#xff09; 一、题目 如果连续数字之间的差严格地在正数和负数之间交替&#xff0c;则数字序列称…...

Stable Diffusion插件Recolor实现黑白照片上色

今天跟大家分享一个使用Recolor插件通过SD实现老旧照片轻松变彩色&#xff0c;Recolor翻译过来的含义就是重上色&#xff0c;该模型可以保持图片的构图&#xff0c;它只会负责上色&#xff0c;图片不会发生任何变化。 一&#xff1a;插件下载地址 https://github.com/pkuliyi…...

Android 音频焦点管理

前言 前面写过一篇类似的文章&#xff0c;没写完&#xff0c;今天再详细描述一下。 Android音频焦点申请处理 音频焦点管理的意义 两个或两个以上的 Android 应用可同时向同一输出流播放音频。系统会将所有音频流混合在一起。虽然这是一项出色的技术&#xff0c;但却会给用…...

【卷积神经网络作业实现人脸的关键点定位功能】

下面是完成这道题目的代码&#xff1a;import os import cv2 import numpy as np import pandas as pd import torch import torch.nn as nn from torch.utils.data import Dataset,DataLoader from torchvision import transforms import matplotlib.pyplot as plt1. 数据集定…...

挖到宝!阿贝云免费云服务太香了,学生党开发者闭眼冲

做个人博客、练技术、部署轻量应用还在找高性价比云服务&#xff1f;阿贝云https://www.abeiyun.com 直接把免费做到极致&#xff0c;免费虚拟主机 免费云服务器双福利&#xff0c;用下来的体验真的远超预期&#xff0c;稳定不卡顿还免备案&#xff0c;新手操作也毫无门槛太省…...

告别计算瓶颈:手把手教你用PyTorch实现ECCV 2024的FFCM图像去雨模块

突破计算效率边界&#xff1a;PyTorch实战ECCV 2024 FFCM图像去雨核心模块 雨滴干扰是计算机视觉领域长期存在的挑战&#xff0c;传统基于空间域的方法往往需要消耗大量计算资源。ECCV 2024提出的FFCM&#xff08;Fused Fourier Convolution Mixer&#xff09;模块通过巧妙融合…...

抖音视频批量下载高效解决方案实战指南

抖音视频批量下载高效解决方案实战指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖音批量下载工具&…...

高数值孔径物镜焦斑分析

背景介绍在显微成像、激光加工、光存储与单分子探测等应用中&#xff0c;高数值孔径物镜承担着“把光压缩到极小空间”的关键任务。物镜聚焦后的焦斑尺寸、形状、能量分布以及偏振特性&#xff0c;直接决定系统的分辨率、加工精度和探测灵敏度。因此&#xff0c;如何准确分析高…...

门店小程序和收银系统有什么区别?

门店小程序和收银系统有什么区别&#xff1f;在门店数字化过程中&#xff0c;很多企业会同时接触到小程序与收银系统&#xff0c;但两者在功能定位和使用场景上存在明显差异。门店小程序和收银系统的本质区别&#xff0c;在于一个偏向“获客与转化入口”&#xff0c;一个偏向“…...

告别手动抄表!WinCC结合SQL Server和Excel,打造车间级设备运行数据看板

工业数据可视化实战&#xff1a;用WinCCSQL Server构建车间级智能看板 在制造业数字化转型浪潮中&#xff0c;车间设备数据的可视化呈现已成为提升生产效率的关键环节。传统的人工抄表方式不仅耗时耗力&#xff0c;更难以实现数据的实时分析和历史追溯。本文将介绍如何利用Win…...

OpenCore Legacy Patcher完整指南:四步让老旧Mac免费升级最新macOS

OpenCore Legacy Patcher完整指南&#xff1a;四步让老旧Mac免费升级最新macOS 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 还在为苹果官方停止支持的老旧…...

万象视界灵坛实战教程:构建小红书爆款笔记封面图‘高点击率特征’预测模型

万象视界灵坛实战教程&#xff1a;构建小红书爆款笔记封面图高点击率特征预测模型 1. 项目背景与价值 在内容创作领域&#xff0c;封面图的质量直接影响用户点击率。小红书平台数据显示&#xff0c;优质封面图能带来300%以上的点击率提升。然而&#xff0c;传统封面设计依赖人…...

省钱方案:用NAT主机+Frpc实现高速内网穿透(避坑指南)

低成本内网穿透实战&#xff1a;NAT主机与Frpc的高效组合方案 引言&#xff1a;为什么选择NAT主机Frpc方案&#xff1f; 对于需要远程访问家庭NAS、搭建私有云盘或部署开发测试环境的用户来说&#xff0c;内网穿透是刚需。传统方案要么成本高昂&#xff08;独立IP服务器&#x…...