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.propobj['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高程笔记-------第五章 引用类型

你可以在javascript中使用模板文字创建对象属性名称吗?

Javascript - 使用字符串连接设置变量[重复]

JavaScript对象:按名称作为字符串访问变量属性[重复]

Javascript中的绑定是啥意思?

JavaScript权威指南(第6版)学习笔记三