JavaScript访问对象属性问题:如何获取payment[method]的值?
如何正确获取AJAX返回对象中嵌套形式键名的属性值?
看起来你踩了一个很常见的对象键名坑,我来给你捋清楚:
首先得明确一个关键点:你console.log出来的params对象里,"payment[method]"是一个完整的字符串键名,并不是params下有个payment子对象,然后子对象里有method属性。这就是你之前写法失效的核心原因!
正确的获取方式有两种:
- 直接获取:用方括号把整个键名字符串包起来,直接访问:
console.log(params["payment[method]"]); // 会返回"adyen_sepa" - 动态键名获取:如果想通过变量来访问,要注意变量里的键名不要带多余的单引号,直接写真实的键名字符串:
var objKey = "payment[method]"; // 这里不要加字符串里的单引号 console.log(params[objKey]); // 同样能拿到正确值
为啥之前的写法不行?
- 你写
params.payment['method']时,params里根本没有payment这个属性,所以params.payment是undefined,再去取['method']自然也是undefined。 - 你定义
var obj = "payment['method']"时,这个键名和params里真实的键名"payment[method]"不一致(多了内部的单引号),所以params[obj]当然找不到对应值。
内容的提问来源于stack exchange,提问作者Attila Naghi
相关产品推荐
相关产品推荐

