JavaScript - 创建对象并使用变量作为属性名称?

Pru*_*goe 42 javascript jquery properties object

我正在创建自己的对象:

gridObject = new Object();
Run Code Online (Sandbox Code Playgroud)

然后我使用jquery来拉取列表项标签的内容,这些标签本身就是用来填充的

具有特定类名的标签:

<li row="1"><p class="department" rowitem="department">Photography</p>...</li>
Run Code Online (Sandbox Code Playgroud)

我正在使用此代码拉他们:

//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();
    }
    }
Run Code Online (Sandbox Code Playgroud)

我被挂断了,把它传递给了我的对象.两个问题.可以使用变量名来创建对象属性,就像这样

griObject.fieldname = fieldvalue;
Run Code Online (Sandbox Code Playgroud)

并且对象可以具有父/子关系,例如:

gridObject.r.fieldname = fieldvalue; 
Run Code Online (Sandbox Code Playgroud)

在这种情况下,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");
}
Run Code Online (Sandbox Code Playgroud)

Ski*_*ick 81

如果要使用变量属性名称,请使用下标语法:

var fieldname = 'test';

//These two lines are equivalent as long as fieldname is 'test':
gridObject[fieldname] = fieldvalue;
gridObject.test = fieldvalue
Run Code Online (Sandbox Code Playgroud)