有两种方法可以访问对象的属性:
var obj = {a: 'foo', b: 'bar'};
obj.a //foo
obj['b'] //bar
或者,如果需要动态地执行:
var key = 'b';
obj[key] //bar
如果您还没有将其作为对象,则需要对其进行转换。
对于一个更复杂的示例,让我们假设您有一个表示用户的对象数组:
var users = [{name: 'Corbin', age: 20, favoriteFoods: ['ice cream', 'pizza']},
{name: 'John', age: 25, favoriteFoods: ['ice cream', 'skittle']}];
若要访问第二个用户的age属性,可以使用users[1].age
。若要访问第一个用户的第二个“FavoriteFood”,请使用users[0].favoriteFoods[2]
。
另一个示例:obj[2].key[3][“some key”]
它将访问名为2的数组的第3个元素。然后,它将访问该数组中的'key',转到该数组的第三个元素,然后访问属性名some key
。
正如Amadan所指出的,可能还值得讨论如何在不同的结构上循环。
要在数组上循环,可以使用简单的for循环:
var arr = ['a', 'b', 'c'],
i;
for (i = 0; i < arr.length; ++i) {
console.log(arr[i]);
}
在对象上循环要复杂一些。如果您完全肯定对象是普通对象,则可以使用普通for(xinobj){}
循环,但添加hasOwnProperty检查要安全得多。在无法验证对象没有继承属性的情况下,这是必要的。(它将来也会对代码进行一些验证。)
var user = {name: 'Corbin', age: 20, location: 'USA'},
key;
for (key in user) {
if (user.hasOwnProperty(key)) {
console.log(key + " = " + user[key]);
}
}
(注意,我假设您使用的任何JS实现都有console.log
。如果没有,您可以使用alert
或某种DOM操作。)