环境
Ubuntu 18.04.4 LTS
Firefox 74.0
铬80.0
问题
我的问题是,将来在使用重复标签时,完全支持将符号作为Firefox中Javascript对象的关键标识符。在Chrome的情况下,它可以添加两个具有相同标签的符号键。
Symbol(id): 1284225
Symbol(id): 55586另一个讨论是这是好的还是坏的。
示例
我只是运行了一小部分代码。
// main.js
const idSym = Symbol('id')
const idSym2 = Symbol('id')
const user = {
id: 978,
name: 'Dominique',
city: 'Siena',
age: 59
}
user[idSym] = 1284225
user[idSym2] = 55586
console.log(user)Firefox的控制台输出:
{id: 978, name: "Dominique", city: "Siena", age: 59}
main.js:89
age:59
city:"Siena"
id:978
name:"Dominique"
Symbol(id):1284225
__proto__:{}Chrome控制台输出:
id: 978, name: "Dominique", city: "Siena", age: 59, Symbol(id): 1284225, …}
id: 978
name: "Dominique"
city: "Siena"
age: 59
Symbol(id): 1284225
Symbol(id): 55586
__proto__: Object发布于 2020-04-05 13:31:26
我刚找到了这种行为的答案。完全出乎意料。只有当我在Visual代码中使用调试功能时,才会发生这种情况。我正在使用VScode (https://github.com/firefox-devtools/vscode-firefox-debug)中的官方火狐扩展,但由于某种原因,它在这种特殊情况下失败了。我会说是个虫子。
当我在Firefox中直接运行时,我得到了与Chrome相同的输出。
发布于 2020-04-05 13:11:57
Symbol()的string参数只是对象的描述性标签;它除了帮助调试之外,没有其他用途。如果您想用相同的标签创建所有的符号实例,那很好。他们仍然被保证是不同的对象。
https://stackoverflow.com/questions/61043113
复制相似问题