为什么可以使用数组表示法访问对象?当属性名称在变量中时,为什么需要数组表示法?

时间:2015-03-15 19:33:02

标签: javascript

采用以下示例:

var obj = {};

obj.test1 = 'string'; // string
obj['test2'] = 'string'; // string
obj['test3'] = ['string']; // array

var key = 'test4';
//obj.key = 'string' // not working

var key = 'test5';
obj[key] = 'string'; // working

console.log(obj);

Fiddle

为什么可以使用数组表示法(方括号)访问对象属性:obj['test2'] = 'string';

为什么使用点表示法的test4示例失败,但在test5使用数组表示法?

1 个答案:

答案 0 :(得分:3)

  

为什么可以使用数组表示法(方括号)访问对象属性:obj [' test2'] =' string';?

因为这是定义JavaScript工作的方式。这不是"数组符号&#34 ;;它是"方括号符号"。

  

为什么使用点表示法的test4示例失败,但在test5使用数组表示法?

obj.key访问obj上名为" key"的媒体资源。您的对象没有名为" key"的属性,因此生成undefined

obj[key]将访问名称为存储在变量key中的值的属性。 obj['test4']将使用名称" test4"访问该媒体资源。和obj['te' + 'st4']一样,等等。

方括号表示法允许根据字符串值访问属性。点表示法允许通过代码中实际写入的名称访问属性。