Symbol 是一种数据类型,在 JavaScript 中 Symbol() 函数用来创建该类型的实例。像下面这样:
let sym = Symbol("str");
其中函数传入的字符串用来描述创建的实例,可以不传入。
Symbol() 生成的值是一个匿名的,不可枚举的,唯一的值。Symbol 类型唯一合理的用法是用变量存储 Symbol 值,然后用存储的值创建对象属性。
const pro = Symbol();
let obj = {};
obj[pro] = "symbol prototype";
除了自己创建,JavaScript 还提供了一些内建的 symbol。比如 Symbol.iterator 用来返回一个对象默认迭代器,可以用来使 Object 具有迭代行为:
var obj = {
a: 1
};
obj[Symbol.iterator] = function () {
return {
next: function () {
return {
/* 这是要返回的对象,格式是固定的,done 为 true 时迭代停止 */
value: 1,
done: false
}
}
};
}
for (let val of obj) {
console.log(val);// 会打印无数个 1
}