Abh*_*jit 2 javascript object-literal javascript-objects
这是一个样本.我的担心似乎都在做.哪个更喜欢?
var fooArr = [{ "bar": {"blah": 9 } }];
for(var i in fooArr) {
var value = fooArr[i].bar.blah;
console.log(value); //checking in firebug console
}
var fooObj = { "bar": {"blah": 9 } };
for(var i in fooObj) {
var value = fooObj[i].blah;
console.log(value); //checking in firebug console
}
Run Code Online (Sandbox Code Playgroud)
此外,以下似乎无效,任何避免数组表示法的方法.
var fooObj1 = {
{ "bar": { "blah": 9 } },
{ "bar": { "blah": 4 } },
{ "bar": { "blah":12} }
};
Run Code Online (Sandbox Code Playgroud)
所以我不得不将上面的代码修改为类似下面的代码.使用Object文字过于粘稠是不是太糟糕了
var fooObj1 = {
1:{ "bar": { "blah": 9 } },
2:{ "bar": { "blah": 4 } },
3:{ "bar": { "blah":12} }
};
Run Code Online (Sandbox Code Playgroud)
再次感谢那些帮助我查询的人.
该示例并不真正比较对象和数组.你只是通过将一个对象放在数组的第一个元素中来添加一个不必要的层.
必须按名称引用某个对象时使用对象.
var obj = {}
Run Code Online (Sandbox Code Playgroud)
// 3种做同样事情的方法:
var obj.newName = 'bob';
var obj['newName'] = 'bob';
var name = 'newName';
var obj[name] = 'bob';
Run Code Online (Sandbox Code Playgroud)
第二种风格并不是必需的,实际上可能比第一种风格更慢,但它可以帮助您理解第三种风格如何有用.或者你可以完全完成以下任务:
var obj = { newName:'bob' }
Run Code Online (Sandbox Code Playgroud)
如果你想在一个对象中有一堆名字,那会有点傻:
var obj = { newName:'bob', anotherNewName:'sue', yetAnotherNewName:'billy' }
obj.newName === 'bob'
obj.anotherNewName === 'sue'
//etc...
Run Code Online (Sandbox Code Playgroud)
这就是数组的用途.
var listOfNewNames = ['bob','sue','billy']
listOfNewNames[0] === 'bob'
listOfNewNames[1] === 'sue'
//etc...
Run Code Online (Sandbox Code Playgroud)
当然,没有什么可以阻止您将数组分配给对象属性:
obj { listOfNewNames:['bob','sue','billy'] }
obj.listOfNewNames[0] === 'bob'
Run Code Online (Sandbox Code Playgroud)
或者,如上所示,数组中有多个对象:
var listOfMonsters = [
{ monsterName:'Grarrr',eats:'people' },
{ monsterName:'Wadsworth',eats:'other monsters'}
];
listOfMonsters[1].monsterName === 'Wadsworth'
Run Code Online (Sandbox Code Playgroud)
对象通常更多地是将相关值和方法的组保持在一起以便于参考.数组只是一个通常可以假设适用于或来自同一事物的东西的列表.