如果不能访问Symbols,我真的不明白它们的用途。我知道您可以使用for
创建一个具有如下密钥的密钥,然后使用keyFor
检索它。
let keySymbol = Symbol.for("XXX");
console.log(Symbol.keyFor(keySymbol) // "XXX";
但是,当涉及到实际使用它们时,以下示例的目的是什么?
let obj = {
name: "Mike",
age: 44,
}
obj[Symbol()] = false;
console.log(obj)
没有符号字段,在对象中迭代也没有,所以如果你不能访问或读取它,它有什么用途?
看待这一问题的一种方法是稍微更改您的示例:
const mySymbol = Symbol();
obj[mySymbol] = false;
因为您仍然有权访问mySymbol
,所以您仍然可以访问此属性。因为没有人可以从头开始创建它,所以没有人会意外地覆盖它或访问它,除非他们有权访问mySymbol
。