我刚开始使用JS,想知道为什么Symbol周围有[]。例如:在一个对象中。
var bow = {
[Symbol('apple')] : something,
[Symbol('banana')] : something,
....
}另外,当涉及到迭代器时:
var iterableObject = {
[Symbol.iterator] : function() {.....}
}谁能解释一下这些[]在他们周围的用途是什么?我用谷歌搜索了一下,但没有找到满意的答案,提前谢谢你。
发布于 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
它们是相似的,但在定义对象时用于设置属性,而不是从已定义的对象中获取属性。
发布于 2017-11-16 10:18:32
方括号只是object字面语法的一部分。
当您使用对象文字语法创建对象时,现在可以使用变量来设置对象内部的键。
const string = 'whatever'
const normalObject = {
[string]: 'something else'
}这导致normalObject具有一个属性,即'whatever'指向'something else'
// normalObject
{ whatever: 'something else' }在object文字语法中使用方括号只是为了允许您使用变量来设置对象中的键。
回到你的例子中,这只是允许你在你的对象中使用符号作为键。
你可能已经注意到了,这有点奇怪。直到最近,一个对象只能有String键。符号不是你可以在对象中用作键的另一种东西。
var bow = {
[Symbol('banana')] : something,
[Symbol('banana')] : something,
....
}这将产生一个具有两个指向something的不同Symbol(banana)的对象。
https://stackoverflow.com/questions/47320210
复制相似问题