Javascript获取对象键名

我如何得到关键的名字? 比如我想要“button1”和“button2”?

var buttons = { button1: { text: 'Close', onclick: function(){ } }, button2: { text: 'Close2', onclick: function(){ } } } var i; for(i in buttons){ if(buttons.hasOwnProperty(i)){ alert(buttons[i].text); } } 

我尝试使用.push()虽然这不起作用。

如果你稍微修改一下措辞,这可能会更好理解:

 var buttons = { foo: 'bar', fiz: 'buz' }; for ( property in buttons ) { console.log( property ); // Outputs: foo, fiz or fiz, foo } 

请注意,您正在迭代对象的property ,在每个后续循环中使用property作为每个对象的引用。

MSDN说的for ( variable in [object | array ] )如下:

在循环的每次迭代之前,variables被赋予对象的下一个属性名称或数组的下一个元素索引。 然后可以在循环内的任何语句中使用它来引用对象的属性或数组的元素。

还要注意的是,对象的属性顺序不是恒定的,并且可以改变,而不像数组的索引顺序。 这可能会派上用场。

ECMAscript版本5还为您提供整洁的方法Object.keys()Object.getOwnPropertyNames()

所以

 Object.keys( buttons ); // ['button1', 'button2']; 

更改alert(buttons[i].text); alert(i);

假设你可以访问原型,这可以工作。 我几分钟前为自己编写了这个代码; 我一次只需要一个键,所以这对于键值对的大列表或者分配多个键名是不够的。

 function key(int) { var j = -1; for(var i in this) { j++; if(j==int) { return i; } else { continue; } } } Object.prototype.key = key; 

这被编号为与数组一样工作,以节省头痛。 在你的代码的情况下:

 buttons.key(0) // Should result in "button1" 

variablesi是你的关键的名字。