symbol
Posted yanze
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了symbol相关的知识,希望对你有一定的参考价值。
symbol,代表独一无二的值,即类型为symbol的值,是独一无二的。
第6种基本类型,类似于字符串。
let a=Symbol(); let b= Symbol(); console.log(typeof a); //symbol console.log(a===b) //false;
通过Symbol函数生成,不能使用new,这是因为原始类型的显式包装器对象自ES6开始已不再支持,但已有的原始包装器对象,如new Boolean、new String仍然保留。
可接受一个字符串作为参数,表示对其的描述,主要方便于在控制台显示,及转换为字符串时容易区分
备注:输出时不带引号
let a=Symbol ("sa"); console.log(a); //Symbol(sa)
多用于对象的属性名,能防止被覆盖修改,必须用方括号扩住,且无法通过访问属性名或for in 的方式访问到,
但Object.getOwnPropertySymbols(对象)能获取到对象的symbol属性数组
let a= Symbol("aa") let b= [a]: 123, c: 1 for(let i in b) console.log(i) //c console.log(Object.getOwnPropertySymbols(b)) //[Symbol[aa]]
可做数据类型的转换,但不能参与任何运算
let a= Symbol("aa") console.log(a.toString()) //Symbol(aa) console.log(a+1) //报错
以上是关于symbol的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript ES6 奇妙的Symbol类型(╹ڡ╹ )