【问题标题】:How to access a dynamic property: objectName.{variable} [duplicate]如何访问动态属性:objectName.{variable} [重复]
【发布时间】:2013-05-07 07:07:10
【问题描述】:

我需要访问

objectName.myID 

但“myID”部分是动态生成的..

我该怎么做?

我试过了

this['objectName.'+ variable]

我不想使用 eval...

ps 顺便说一句,这发生在一个函数(本地范围)中..

【问题讨论】:

  • 抱歉,这是非常基本的 jQuery,而且您似乎还没有接近。提示:$("#foo")
  • @Álvaro 对不起,Alvaro,但显然你甚至没有接近答案......
  • @Christoph - 好吧,您的编辑已经改变了问题的含义很多;-)
  • @Álvaro 不,它没有 - 它只是消除了你显然喜欢的歧义:-D

标签: javascript object


【解决方案1】:

您可以访问Object properties in two ways:

o.propertyname
//or
o.["propertyname"]

使用方括号表示法时,您必须将属性名放在引号中,否则它将被解释为变量名(在您的情况下,这正是您想要的)。因此,在您将属性名称存储为字符串的情况下,要走的路是:

var variable = "propertyname";
o[variable];
/* /\ variable is replace with it's string representation "propertyname" */

你甚至可以这样调用方法:

var o = {};
var functionname = 'toString';
o[functionname]();

您可以混合使用这两种符号,您的示例如下所示:

var obj = 'objectName';
var prop = 'myID';
this[obj][prop]
// or this is possible too:
this.objectName[prop]

【讨论】:

  • 嗯,我以为我已经尝试过了,但它没有用..我再试一次.. tnx 一堆
【解决方案2】:

假设propertyName是一个持有属性名的变量名,例如'myId',那么就可以使用了。

objectName[propertyName]

更多详情见 MDN:Working with objects

【讨论】:

  • 抱歉,还是错了——应该是objectName['propertyName'] ...
  • @Christoph 我不同意。如果 propertyName 是一个保存属性名称的变量,如果名称是动态的,则应该是这种情况,那么它是正确的语法。
  • 添加您的评论后,意图很明确。但是,就目前而言,您的回答暗示 propertyName 是属性的名称而不是变量,因此非常具有误导性。如果你想让它成为一个社区 wiki,你的答案应该坚如磐石,而不是像现在这样模棱两可。
猜你喜欢
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
  • 2014-10-11
  • 2021-09-23
  • 1970-01-01
  • 2011-06-15
  • 2021-12-05
相关资源
最近更新 更多