JS:如果符号不可访问,为什么要使用它们



如果不能访问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

相关内容

最新更新