【问题标题】:How to reference an object by variable in javascript [duplicate]如何在javascript中通过变量引用对象[重复]
【发布时间】:2017-05-23 22:32:33
【问题描述】:

我在一个数组中有以下对象,我想循环这些对象具有相同的方法。

var myObjects = ['a','b','c'];

如何循环遍历这个数组并调用相同的方法?

a.doThis();
b.doThis();
c.doThis();

【问题讨论】:

  • myObjects.forEach(obj => obj.doThis())
  • 不确定收集问题。 OP 中没有包含javascript 吗?
  • "我在一个数组中有以下对象" — 这些是字符串
  • @Quentin 好吧,我有一个数组中包含名称的对象。

标签: javascript


【解决方案1】:

您可以使用Array.forEach(...) 循环来实现此目的。它将遍历数组中的每个对象并执行给定的函数。

var myObjects = ['a', 'b', 'c']
myObjects.forEach(o => o.doThis())

Array.prototype documentation (MDN)

编辑:正如 Rob 指出的那样,如果您尝试在某些上下文中访问名为 abc 的实际对象(假设为 this 上下文),您可以请执行下列操作。这将取决于这些对象实际所在位置的上下文。只要myObjects 和您的实际对象在相同的范围/上下文中定义,this 就应该可以工作。

var myObjects = ['a', 'b', 'c']
myObjects.forEach(o => this[o].doThis())

【讨论】:

  • 我认为您错过了问题的重点。 OP 希望将字符串用作变量名称,类似于使用方括号表示法访问对象属性,例如variableObj[myObjects[0]]
  • 是的,我的错,不是很清楚。
  • 您将 thisEnvironmentRecord 混淆了,后者是 execution context 的一部分。函数的 thisEnvironmentRecord 的参数,与作用域或变量无关。
  • 这就是我添加“应该工作”部分的原因,无法知道这段代码在什么情况下运行(函数?全局?lambda/arrow func?)。
猜你喜欢
  • 2019-12-20
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-23
  • 1970-01-01
  • 2017-01-27
相关资源
最近更新 更多