0

我无法访问对象的属性。

难道不能像这样访问对象的属性吗?

key["heading"]

上面代码中的 key 是一个变量。

下面的代码是我现在正在处理的代码。

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 知识。

请帮我解决这个问题。

4

1 回答 1

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),你会看到。

于 2013-09-14T02:42:55.427 回答