Symbol是ES6中引入的一种新的基本数据类型,用于表示一个独一无二的值。它是JavaScript中的第七种数据类型,与undefined、null、Number(数值)、String(字符串)、Boolean(布尔值)、Object(对象)并列。
你可以这样创建一个Symbol值:
const a = Symbol();
console.log(a); //Symbol()
使用Symbol函数可以生成一个Symbol类型的值,但是你不能在调用Symbol时使用new关键字,因为Symbol是基本数据类型,而不是对象。比如下面的写法是错误的:
//报错,Symbol is not a constructor
const a = new Symbol();
使用Symbol()创建一个Symbol类型的值并赋值给a变量后,你就得到了一个在内存中独一无二的值。现在除了通过变量a,任何人在任何作用域内都无法重新创建出这个值。例如当你这样写:
const b = Symbol();
<script>
//创建Symbol
let s1 = Symbol()
console.log(s1,typeof s1);
// 添加标识符Symbol
let s2 = Symbol('质感')
let s2_2 = Symbol('质感')
console.log(s2 === s2_2);
// 使用Symbol for定义
let s3 = Symbol.for('质感')
let s3_2 = Symbol.for('质感')
console.log(s3 === s3_2); //true Symbol for()来实现
const a = Symbol('a')
const b = Symbol.for('b')
const c = Symbol.for('c')
const obj = {
[a]:1,
[b]:2,
[c]:3,
}
console.log(b === b); //true
console.log(obj);
let d = Symbol.for("hello")
console.log(Symbol.keyFor(c)); //如果想要获取Symbol中的描述文字,则可以使用Symbol.keyFor()
</script>