我在访问对象的属性时遇到了麻烦。
是不是可以像这样访问对象的属性?
key["heading"]
上面代码中的键是一个变量。
以下代码是我正在处理的代码。
alertHeading.on('blur', function(){
var inputtedVal = $(this).val();
var key = alertMode.val();
chrome.runtime.getBackgroundPage(function(backgroundPage) {
var background = backgroundPage.background;
//(1)This works fine.
background.setStorage(key, {heading:inputtedVal});
console.log(background.getStorage(key));// Object {heading: "aaa"}
//(2)This doesn't work.
var alertObject = background.getStorage(key["heading"]);
console.log(alertObject);// null. I'm expecting to get "aaa".
});
})
我认为我犯的一个非常简单的错误来自于我缺乏javascript知识。
请帮我解决这个问题。
答案 0 :(得分:4)
你的key
不是一个对象,它是一个字符串。从background.getStorage(key)
返回的是一个对象,所以你可以这样做:
var alertObject = background.getStorage(key)["heading"]; // note () and [] placement
// OR, in two steps:
var alertObject = background.getStorage(key);
var heading = alertObject["heading"];
编辑:
“我还没理解为什么它不是一个对象而是一个字符串呢”
您的key
变量设置为jQuery .val()
方法的返回值:
var key = alertMode.val();
...返回一个字符串,该字符串是调用它的表单元素的值。添加一个console.log(key)
,你会看到。