JavaScript中使用方括号表示法的嵌套对象

时间:2013-01-21 10:15:03

标签: javascript

我正在努力实现以下目标:

this.inputs[options.el.find('form').attr('class')] = {};

this.inputs[options.el.find('form').attr('class')][options.elements[x].selector] = false;

但是,如果没有语法错误,我无法执行上述操作!

我是如何实现这种对象结构的?

2 个答案:

答案 0 :(得分:2)

这种语法看起来很合法,但这些长篇单词并没有给任何人带来任何好处。把它分开一点,这样你就可以找到它失败的地方。

var className = options.el.find('form').attr('class');
var selector = options.elements[x].selector;

this.inputs[className] = {};
this.inputs[className][selector] = false;

答案 1 :(得分:0)

对象的索引应始终为字符串:

var obj = {
  a: 2;
}

obj.a = 3; //a is 3 now
obj['a'] = 4;//a is 4 now

你说options.elements[x].selectorinput[name="username"]所以我猜这一行:

this.inputs[options.el.find('form').attr('class')][options.elements[x].selector] = false;

你真正想做的是:

this.inputs[options.el.find('form').attr('class')]['username'] = false;

所以你可以这样做:

var sel = options.elements[x].selector;
console.log( 'sel is ' + sel );
this.inputs[options.el.find('form').attr('class')][sel] = false;

确保sel是一个字符串。您可能想尝试

var sel = options.elements[x].selector.value;

.value位从输入元素中检索文本。

相关问题