如何从 JavaScript 中用作对象键的同名符号访问数据

Wil*_*iam 5 javascript symbols ecmascript-6

我正在学习 JavaScript 符号,根据我所读到的内容,它们用于保护对象属性键覆盖。在下面的代码中,我创建了两个具有相同变量名的符号并将它们用作对象键。我想知道如何访问分配给程序底部的任一“符号”键的数据。如果我完全误解了符号的用途,请指出。

var id = Symbol("my id");             // Create a Symbol

var user = {

    name:"Bob",
    age:30,
    [id]:"my id 12345"               // Use it as a property key and add some data
}

var id = Symbol("my different id"); // Create a new Symbol

user[id] = "my different id 9876"   // Assign it with some new data

console.log(user);

/* The object contains both symbols. No overwrites!


{

    name: "Bob", 
    age: 30, 
    Symbol(my id): "my id 12345", 
    Symbol(my different id): "my different id 9876"

}


*/
Run Code Online (Sandbox Code Playgroud)

dis*_*uct 5

如果我理解正确的话,你需要

var id = Symbol.for("my id");

var user = {
    name:"Bob",
    age:30,
    [id]:"my id 12345"     
}

var id = Symbol.for("my different id");

user[id] = "my different id 9876"

console.log(user[Symbol.for("my id")]); 
console.log(user[Symbol.for("my different id")]);
Run Code Online (Sandbox Code Playgroud)

id变量被重新分配,因此您可以仅使用它来获取"my different id 9876"符号不会被重新分配。