首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么对象中的symbol类型的键有一个括号

为什么对象中的symbol类型的键有一个括号
EN

Stack Overflow用户
提问于 2017-11-16 09:43:46
回答 2查看 508关注 0票数 1

我刚开始使用JS,想知道为什么Symbol周围有[]。例如:在一个对象中。

代码语言:javascript
复制
var bow = {
    [Symbol('apple')] : something,
    [Symbol('banana')] : something, 
    ....
}

另外,当涉及到迭代器时:

代码语言:javascript
复制
var iterableObject = {
    [Symbol.iterator] : function() {.....}
}

谁能解释一下这些[]在他们周围的用途是什么?我用谷歌搜索了一下,但没有找到满意的答案,提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2017-11-16 09:47:11

请参阅https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_Accessors

括号表示法只是访问对象上的属性的另一种方式。特别是,当属性名不能与点符号一起使用时,会使用它,比如Symbol.iterator

您可能还需要查看计算属性名称:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer#Computed_property_names

它们是相似的,但在定义对象时用于设置属性,而不是从已定义的对象中获取属性。

票数 2
EN

Stack Overflow用户

发布于 2017-11-16 10:18:32

方括号只是object字面语法的一部分。

当您使用对象文字语法创建对象时,现在可以使用变量来设置对象内部的键。

代码语言:javascript
复制
const string = 'whatever'
const normalObject = {
    [string]: 'something else'
}

这导致normalObject具有一个属性,即'whatever'指向'something else'

代码语言:javascript
复制
// normalObject
{ whatever: 'something else' }

在object文字语法中使用方括号只是为了允许您使用变量来设置对象中的键。

回到你的例子中,这只是允许你在你的对象中使用符号作为键。

你可能已经注意到了,这有点奇怪。直到最近,一个对象只能有String键。符号不是你可以在对象中用作键的另一种东西。

代码语言:javascript
复制
var bow = {
    [Symbol('banana')] : something,
    [Symbol('banana')] : something, 
    ....
}

这将产生一个具有两个指向something的不同Symbol(banana)的对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47320210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档