Symbol类型的注意点?
一、Symbol函数前不能使用new,否则会报错
let s = new Symbol('ss')
console.log(s)
//TypeError: Symbol is not a constructor
二、Symbol函数可以接受一个字符串作为参数,表示对Symbol实例的描述,主要是为了在控制台显示,或者转化为字符串时,比较容易区分。
三、Symbol作为属性,该属性不能出现在for…in,for…of循环中,也不会被Object.keys(),Object.getOwnPropertyNames(),JSON.stringify()返回
let s = Symbol(11)
let obj = {name:"dmc",age: 20,[s]: 'hhhh'
}
for(let i in obj) {console.log(i)
}
//name,age
let s = Symbol(11)
let obj = {name:"dmc",age: 20,[s]: 'hhhh'
}
console.log(Object.keys(obj)) //['name', 'age']
let s = Symbol(11)
let obj = {name:"dmc",age: 20,[s]: 'hhhh'
}
console.log(Object.getOwnPropertyNames(obj)) //['name', 'age']
let s = Symbol(11)
let obj = {name:"dmc",age: 20,[s]: 'hhhh'
}
console.log(JSON.stringify(obj))// {"name":"dmc","age":20}
四、Object.getOwnPropertySymbols方法返回一个数组,成员是当前对象的所有用作属性名的 Symbol 值
let s = Symbol(11)
let obj = {name:"dmc",age: 20,[s]: 'hhhh'
}
console.log(Object.getOwnPropertySymbols(obj))
//[Symbol(11)]
五、Symbol.for 接受一个字符串作为参数,然后搜索有没有以该参数作为名称的 Symbol 值。如果有,就返回这个 Symbol 值,否则就新建并返回一个以该字符串为名称的 Symbol 值。
let s = Symbol.for('hhh')
let s1 = Symbol.for('hhh')
console.log(s === s1) //true
六、Symbol.keyFor方法返回一个已登记的Symbol类型的值的key
let s = Symbol.for('hhh')
let s1 = Symbol.for('hhh')
console.log(Symbol.keyFor(s)) //hhh
Symbol类型的注意点?相关推荐
- [JavaScript] 好用的 JavaScript Symbol 类型
初识Symbol 什么是Symbol? 可以理解它为一个标识,一般情况下用来解决重名问题. let hd = Symbol('hello,dust.') let edu = Symbol('good ...
- JavaScript 为什么要有 Symbol 类型?
摘要: 为什么比怎么用更有意义. 原文:JavaScript 为什么要有 Symbol 类型 作者:前端小智 Symbols 是 ES6 引入了一个新的数据类型 ,它为 JS 带来了一些好处,尤其是对 ...
- ES6笔记(4)-- Symbol类型
系列文章 -- ES6笔记系列 Symbol是什么?中文意思是标志.记号,顾名思义,它可以用了做记号. 是的,它是一种标记的方法,被ES6引入作为一种新的数据类型,表示独一无二的值. 由此,JS的数据 ...
- ES6新特性_ES6对象添加Symbol类型属性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记016
然后我们再来看,给对象添加symbol类型的属性, 这个这样做的目的就是: 保证我们添加的方法或属性是唯一的,因为我们知道 我们的symbol这个属性是有唯一性的. 首先我们有个 let game = ...
- Symbol()类型的定义及特点
前文我们提到了JavaScript中的两种数据类型的存储方式,在说到数据类型的时候,提到了ES6新增的一种数据类型:Symbol类型,这个类型的功能类似于一种标识唯一性的ID.Symbol类型属于Ja ...
- Allegro PCB的5种形状Symbol类型
#1, Allegro PCB的5种形状Symbol类型 Allegro PCB种,有5种类型的Symbol,分别是Package Symbol.Mechanical Symbol.Format Sy ...
- 25.JavaScript的Symbol类型、隐藏属性、全局注册表
文章目录 Symbol类型的使用 Symbol简介 Symbol类型的描述 Symbol不会隐式转字符串 Symbol类似作为对象的属性键 创建Symbol键 for-in中被跳过 隐藏自定义属性 S ...
- 简述 Symbol 类型用途
应用场景1:使用Symbol来作为对象属性名(key) Symbol类型的key是不能通过Object.keys()或者for-in来枚举的,它未被包含在对象自身的属性名集合(property nam ...
- 如何实现一个深拷贝(考虑循环引用对象、和symbol类型)
文章目录 第一步:简单实现 第二步:拷贝数组 第三步:循环引用 1.使用哈希表 2.使用数组 第四步:拷贝 Symbol 第一步:简单实现 其实深拷贝可以拆分成 2 步,浅拷贝 + 递归,浅拷贝时判断 ...
- ES6 Symbol类型的应用、symbol属性名的遍历、Symbol.for()Symbol.keyFor()
目录 Symbol类型 介绍 Symbol.prototype.description Symbol的应用 1 给对象内追加属性 2 消除魔术字符串 symbol属性名的遍历 Symbol.for() ...
最新文章
- python写一个表白程序带时间_Python 打造最强表白程序
- inet_aton和inet_network和inet_addr三者比较-《别怕Linux编程》之五
- 深入Java虚拟机:JVM中的Stack和Heap
- Socket阻塞与非阻塞,同步与异步、I/O模型
- AspectCore中的IoC容器和依赖注入
- COLLEGE.sql(复制的时候注意路径!!!)
- Vue 3.0暂缓发布,前端同学暂时舒了一口气
- python list增删改查_Python 基础list 增删改查 解析
- Java追加文本内容到txt文件
- Nginx图片防盗链、缓存和压缩的示例
- <select> 表单元素
- MySQL主从同步(一)——原理详解
- 6421B Lab11 为分支机构优化数据访问
- kettle MySQL blob_KETTLE BLOB 问题
- MYSQL中的TCL语言
- ubuntu防火墙,ufw命令
- The endpoint reference (EPR) for the Operation not found 可能问题以及解决办法
- 内网邮箱pop服务器,如何在POP3邮件服务器中创建用户邮箱
- 端口(port)详解
- 排水注水java_小学数学重难点:关于《水池注水排水问题》例题详解,考试必备...