JavaScript - 使用变量来引用属性名称? [复制]
Posted
技术标签:
【中文标题】JavaScript - 使用变量来引用属性名称? [复制]【英文标题】:JavaScript - Using a variable to refer to a property name? [duplicate] 【发布时间】:2011-06-09 08:12:13 【问题描述】:我正在创建自己的对象:
gridObject = new Object();
然后我使用 jquery 来拉取列表项标签的内容,这些标签本身是用
填充的具有特定类名的标签:
<li row="1"><p class="department" rowitem="department">Photography</p>...</li>
我正在使用以下代码拉他们:
//make object from results
gridObject = new Object();
//get all the rows
var rowlist = $('li[row]');
for(var r=0; r<rowlist.length; r++)
//make gridObject row element here
//get the row content
var thisrow = $(rowlist[r]).html();
//get all the p tags
var rowitems = $(thisrow + 'p.[rowitem]');
//get field name
for(var ri=0; ri<rowitems.length; ri++)
if (r < 2) //this is temporary just for testing
var fieldname = $(rowitems[ri]).attr('rowitem');
var fieldvalue = $(rowitems[ri]).html();
我被挂断了,将它传递给我的对象。两个问题。对象属性可以用变量名来制作吗,像这样
griObject.fieldname = fieldvalue;
对象是否可以具有父/子关系,例如:
gridObject.r.fieldname = fieldvalue;
在这种情况下,r 和 fieldname 都是变量。还是我应该只使用关联数组来实现类似的东西?
这是对我在下面发布的后续问题的回答:“javascript 中是否有 print_r
等效项” - 您可以使用迭代器,输入更多内容但可以解决问题:
//loop through search data
var it = Iterator(filteritems);
for(var pair in it)
console.log("key:" + pair[0] + ", value:" + pair[1] + "\n");
【问题讨论】:
在 JavaScript 中,对象是一个关联数组。您可以为obj.prop
或 obj['prop']
之类的对象编制索引 - 它们是相同的(除了下标方式在属性名称上更灵活)。
@Skilldrick 我更喜欢术语“映射”,因为在“关联数组”中使用“数组”让一些人想到 php 样式的“数组”和排序,这并不准确,但常见的误解...
我投票决定重新提出这个问题,因为它使用变量处理引用对象属性;不是创建此类对象属性。
【参考方案1】:
如果要使用变量属性名,请使用下标语法:
var fieldname = 'test';
//These two lines are equivalent as long as fieldname is 'test':
gridObject[fieldname] = fieldvalue;
gridObject.test = fieldvalue
【讨论】:
感谢 Skilldrick!不知道协程。数组/对象的关系......我们不能都只是标准化东西的名称......就像在可可它是一本字典,我花了一周时间才意识到字典只是一个关联数组......:D 另一个问题 - 是否有类似 PHP 的 print_r() 的命令可以让您查看对象的所有键/值关系? 对于上面的问题迭代器是我正在寻找的 - 请参阅编辑原始问题的代码。 @PruitIgoe 如果您使用 Chrome 或 Firefox 和 Firebug,您可以使用 console.log() 将内容打印到控制台。不记得它在 Firebug 中的具体操作方式,但在 Chrome 中,它为您提供了一个对象,您可以单击该对象来检查其成员和子成员。真的很有用。以上是关于JavaScript - 使用变量来引用属性名称? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
你可以在javascript中使用模板文字创建对象属性名称吗?