TypeScript Symbol

 1.什么Symbol?

    Symbol是ES6中新增的一种数据类型, 被划分到了基本数据类型中

    基本数据类型: 字符串、数值、布尔、undefined、null、Symbol

    引用数据类型: Object

 2.Symbol的作用

    用来表示一个独一无二的值

3.如何生成一个独一无二的值?

    let xxx = Symbol();

4.为什么需要Symbol?

    在企业开发中如果需要对一些第三方的插件、框架进行自定义的时候

    可能会因为添加了同名的属性或者方法, 将框架中原有的属性或者方法覆盖掉

    为了避免这种情况的发生, 框架的作者或者我们就可以使用Symbol作为属性或者方法的名称

5.如何区分Symbol?

    在通过Symbol生成独一无二的值时可以设置一个标记

    这个标记仅仅用于区分, 没有其它任何含义

6.Dome

 let name = Symbol("name");let say = Symbol("say");let obj = {// 注意点: 如果想使用变量作为对象属性的名称, 那么必须加上[][name]: "张三",[say]: function () {console.log("say");},age: 34,gender: "man",hi: function () {console.log("hi");}}for(let key in obj){console.log(key);}console.log(Object.getOwnPropertySymbols(obj));

七.注意事项

    1.通过Symbol生成独一无二值时需要在后面加上(), 但是前面不能加new, 因为它不是引用  类型

    let xxx = Symbol(); // 正确

    let xxx = new Symbol(); // 错误

    2.通过Symbol生成独一无二值时传入的字符串仅仅是一个标记, 方便我们阅读代码, 没有其它任  何意义

    let xxx = Symbol("name");

    3.做类型转换的时候不能转换成数值

    let xxx = Symbol("name");

    console.log(String(xxx));

    console.log(Boolean(xxx));

    console.log(Number(xxx));

    4.不能做任何运算

    let xxx = Symbol("name");

    console.log(xxx + "abc");

    console.log(xxx + 123);

    5.Symbol生成的值作为属性或方法名称时, 一定更要保存下来, 否则后续无法使用

    let name = Symbol("name");

    let obj = {

        // [name]: "张三"

        [Symbol("name")]: "张三"

    }

    // console.log(obj[name]);

    console.log(obj[Symbol("name")]);

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

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

相关文章

2024獬豸杯

2024.1.28上午9-12时,返乡大学生边帮姐带娃边做,有几题没交上 解压密码:都考100分 手机备份包 手机基本信息 1、IOS手机备份包是什么时候开始备份的。(标准格式:2024-01-20.12:12:12) 2024-01-15.14.19.44 2、请分…

Docker 安装与基本操作

目录 一、Docker 概述 1、Docker 简述 2、Docker 的优势 3、Docker与虚拟机的区别 4、Docker 的核心概念 1)镜像 2)容器 3)仓库 二、Docker 安装 1、命令: 2、实操: 三、Docker 镜像操作 1、命令&#xff1…

centos7 挂载windows共享文件夹报错提示写保护

centos7挂载windows共享时,提示被共享的位置写保护,只能以只读方式挂载,紧接着就是以只读方式挂载失败 原因是组件少装了 yum install cifs-utils 安装完后,正常挂载使用。 下载离线安装包 下载离线包下载工具 下载离线安装包…

SpringBoot系列之MybatisPlus实现分组查询

SpringBoot系列之MybatisPlus实现分组查询 我之前博主曾记写过一篇介绍SpringBoot2.0项目怎么集成MybatisPlus的教程,不过之前的博客只是介绍了怎么集成,并没有做详细的描述各种业务场景,本篇博客是对之前博客的补充,介绍在mybat…

2024/1/27 备战蓝桥杯 1-1

目录 求和 0求和 - 蓝桥云课 (lanqiao.cn) 成绩分析 0成绩分析 - 蓝桥云课 (lanqiao.cn) 合法日期 0合法日期 - 蓝桥云课 (lanqiao.cn) 时间加法 0时间加法 - 蓝桥云课 (lanqiao.cn) 扫雷 0扫雷 - 蓝桥云课 (lanqiao.cn) 大写 0大写 - 蓝桥云课 (lanqiao.cn) 标题…

JUC并发编程与源码分析学习笔记(三)

目录 五十六、JMM之入门简介 五十七、JMM之学术定义和作用 五十八、JMM之三大特性 五十九、JMM之多线程对变量的读写过程 六十、JMM之happens-before-上集 六十一、JMM之happens-before-下集 五十六、JMM之入门简介 Java内存模型之JMM 1、先从大厂面试题开始 ①、你知道…

【SpringSpringBoot】概述

Spring&SpringBoot专题 【注】: 本专题围绕框架核心概念展开,渐进式深入总结学习、面试、开发经验,集中整理便于回顾 持续补充与施工中~~~~ 1.发展史 2.基本架构 Spring框架的基本架构是一个分层架构,包括多个模块&#x…

2024三掌柜赠书活动第六期:人人都离不开的算法——图解算法应用

目录 前言算法概念图解算法应用算法的价值和挑战关于《人人都离不开的算法——图解算法应用》编辑推荐内容简介作者简介图书目录书中前言/序言书摘插画《人人都离不开的算法——图解算法应用》全书速览结束语 前言 作为开发者想必都知道,算法是现代社会中无处不在…

day33_js

今日内容 0 复习昨日 1 JS概述 2 JS的引入方式 3 JS语法 3.1 变量 3.2 基本数据类型 3.3 引用类型 3.4 数组类型 3.5 日期类型 3.6 运算符(算术运算,逻辑,关系运算,三目运算) 3.7 分支 3.8 循环 3.9 函数(重点) 3 常见弹窗函数 alter,confirm,prompt 0 复习昨日 1 盒子模型 对d…

兄弟MFC-8515DN黑白激光多功能一体机硒鼓及粉盒清零方法

耗材信息: 硒鼓DR-3350:约30000页; 墨粉盒TN-3335:约3000页【A4纸5%覆盖率】; 高容量墨粉盒TN-3385:约8000页【A4纸5%覆盖率】; 超高容量墨粉盒TN-3395:约12000页【A4纸5%覆盖率】&a…

php项目下微信小程序对接实战问题与解决方案

一.实战问题与方案总结 1.SQL查询条件是一组数,传参却是一个字符串导致报错,如下 SQLSTATE[HY093]: Invalid parameter number (SQL: select count(*) as aggregate from car_video where province_id in (1492) and city_id in (1493) and county_id …

7 图

图的分类 有向图 add(a,b)无向图 add(a,b) add(b,a) 名词解释 完全图&#xff1a;含有e (n-1)*n/2 条边的无向图有向完全图&#xff1a;含有e (n-1)*n 条边的有向图若边或弧的个数 e<nlogn&#xff0c;则称作稀疏图&#xff0c;否则称作稠密图简单路径&#xff1a;序列中…

LeetCode Hot100 回顾(一)

哈希 128.最长连续序列 要求复杂度为O(n)的算法, 通过两次遍历实现: 第一次遍历将所有元素插入到哈希表中, 第二次遍历过程中对每个元素n进行处理, 如果哈希表中存在值为n-1的元素, 则说明该元素已经被处理或即将被处理; 若不存在, 就继续查看值为n1, n2, n3…的元素是否存在…

个体诊所电子处方系统设计,社区门诊处方开单管理系统软件教程

个体诊所电子处方系统设计&#xff0c;社区门诊处方开单管理系统软件教程 一、前言 以下软件程序操作教程以 佳易王诊所电子处方管理系统软件V17.3为例说明 如图&#xff0c;在基本信息设置里&#xff0c;可以设置处方配方模板&#xff0c;这样在开电子处方的时候可以一键导入…

动态规划——编辑距离问题

假设有a&#xff0c;b两个字符串&#xff0c;现对a字符串进行修改使得a字符串与b字符串完全一样&#xff1b;要求是使用最小的操作次数&#xff0c;使a&#xff0c;b字符串相等。操作有三种&#xff0c;分别是插入一个字符&#xff0c;删除一个字符&#xff0c;替换一个字符。 …

计算机提示缺失dll文件怎么办?那种dll解决方法更值得推荐

当在运行游戏&#xff0c;软件程序的过程中遇到“找不到dll”的情况时&#xff0c;这实际上意味着系统或应用程序无法定位并加载必要的动态链接库文件&#xff08;DLL&#xff09;&#xff0c;从而无法顺利完成预期的功能调用和执行流程。这种问题的发生可能会引发一系列严重后…

Selenium + Django + Echarts 实现亚马逊商品数据可视化爬虫项目

最近完成了1个爬虫项目&#xff0c;记录一下自己的心得。 项目功能简介 根据用户输入商品名称、类别名称&#xff0c;使用Selenium, BS4等技术每天定时抓取亚马逊商品数据&#xff0c;使用Pandas进行数据清洗后保存在MySql数据库中. 使用Django提供用户端功能&#xff0c;显…

PostgreSQL15安装和实现物理复制(主从配置)全程指南

1 概述 本文介绍如何在centos7或rocky9下安装postgresql15&#xff0c;并配置物理复制的全过程。postgresql安装采用shell脚本安装&#xff0c;一键执行&#xff0c;通俗易懂。 2 环境说明 序号IP操作系统用途备注0110.10.0.41rockylinux9.3主库0210.10.0.42rockylinux9.3从…

【electron】安装网络问题处理

目录 场景排查问题排查结论electron 安装失败解决方案 新的问题electron-builder 打包失败处理 场景 在mac上使用electron进行代码开发的时候&#xff0c;无法正常下载与electron、electron-builder相关的依赖 排查问题 是不是因为没有翻墙导致资源无法下载是不是没有设置正…

软件门槛之算法

软件门槛之算法 1.背景2.算法定义3.特征4.基本要素5.常用设计模式6.常用实现方法7.复杂度时间复杂度空间复杂度8.分类9.算法常用的一些工具10.算法的检验标准1.背景 一入行业深似海 再回首已是白发生! 工作这么多年了,感觉算法是比较难搞的。 写代码最重要的可能是框架和算法…