带有方括号和引号的JavaScript JSON对象

时间:2015-01-19 08:54:49

标签: javascript

var arr = { first: 123, second: 456 };

console.log(arr['first']);            // 123
console.log(arr['second']);           // 456
console.log(arr.first);               // 123
console.log(arr['first', 'second']);  // 456

问题1:为什么 arr [' first',' second'] 会获得最后一个元素?

问题2: ['孩子'] .child 有什么不同?


全部!

2 个答案:

答案 0 :(得分:3)

它不是一个数组而是一个对象,但第一个问题实际上很有趣。

使用[]符号获取对象属性意味着您需要传递一个键 - 它可能看起来像一个数组文字,但它不是。

你在方括号中加的是一个陈述。

例如,您可以执行以下操作:arr[ condition ? 'first' : 'second' ] - 解析语句并将其返回值作为键传递。

arr['first', 'second']中,内部语句可以读作('first', 'second'),返回second,因为在JS中,由许多表达式组成的语句返回最后一个语句的值,例如{ {1}}返回(x=2, 4)

它还对4object.child有所了解。在第一个示例中,您需要使用实际密钥,而在第二个示例中,您需要传递一个语句;在这种情况下,语句计算为字符串,但它可以是变量名,或任何可以评估为可用作键(字符串或数字)的东西。

答案 1 :(得分:3)

在JS中,对象是键值对的集合(如果需要,可以是地图或字典)。数组只是另一种类型的对象。但是,您的示例包含一个普通对象。

正如我之前所说,对象具有键,用于提供对方法和属性的访问。

var o = { 
  x: 12, 
  y: function () { console.log(this.x); } 
};

o.y(); // 12

您可以通过2种表示法访问对象的成员:

  • 点符号:o.xo,y
  • 括号表示法:o['x']o['y']

注意,在第二种方法中,您必须提供一个字符串,这意味着 var name = 'x'; o[name]将有效,而o[x]则不会。

这对数组也有效:

var arr = ['a', 'b', 'c'];
arr[0] // 'a'
arr['0'] // 'a'
Object.keys(arr) // ['0', '1', '2']

但是,你不能arr.0

现在,关于你的问题: arr['first', 'second']arr['second']等效,因为您使用逗号运算符从左到右计算每个表达式,并返回最右边的值。 例如:1, alert(0), 5为您提供5