如何通过变量存储的属性名读取JavaScript对象的属性?
解决对象属性名存于变量时的属性访问问题
嗨,这是个很常见的JavaScript小细节坑!你原来的代码用了.(点符号)访问属性,但点符号后面的readItem会被当作字面量属性名,而不是你定义的那个变量——它会去myObj里找名为readItem的属性,自然拿不到你想要的test属性值。
正确的做法是用方括号语法,把变量放进方括号里,JavaScript会先解析变量的实际值,再去对象里匹配对应的属性:
var myObj = { test: 0, other: 'none' }; var readItem = 'test'; console.log(myObj[readItem]); // 输出 0
顺带分享个实用小知识点:方括号里还能放任何能算出字符串的表达式,比如:
- 直接写字符串字面量:
myObj['test']和myObj.test效果完全一致 - 动态拼接属性名:
var suffix = 'New'; myObj['test' + suffix](如果对象有testNew属性的话)
这样就能灵活通过变量动态访问对象属性啦!
内容的提问来源于stack exchange,提问作者Luke Strong
相关产品推荐
相关产品推荐

