符号作为 Firefox 中 Javascript 对象的关键标识符

环境

Ubuntu 18.04.4 LTS

火狐 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


不负相思意
浏览 110回答 2
2回答

长风秋雁

我刚刚找到了这种行为的答案。很出乎意料。这只发生在我在 Visual Studio 代码中使用调试功能时。我在 VScode ( https://github.com/firefox-devtools/vscode-firefox-debug ) 中使用官方的 Firefox 扩展,但由于某种原因,它在这种特殊情况下失败了。我会说这是一个错误。当我直接在 Firefox 中运行时,我得到与 Chrome 相同的输出。

梦里花落0921

字符串参数Symbol()只是对象的描述性标签;它的目的不是为了帮助调试。如果您想使用相同的标签创建所有 Symbol 实例,那很好。它们仍然可以保证是不同的对象。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript