javascript - 访问对象的属性时出现问题

标签 javascript jquery

我在访问对象的属性时遇到问题。

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

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

请帮我解决这个问题。

最佳答案

您的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"];

编辑:

"I haven't understood why it's not an object but a string yet"

您的 key 变量设置为 jQuery 的 .val() 方法的返回值:

var key = alertMode.val();

...返回一个字符串,该字符串是调用它的表单元素的值。添加console.log(key),您就会看到。

关于javascript - 访问对象的属性时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18797755/

相关文章:

javascript - 根据先前的输入选项选择(单选按钮)显示 div 的内容。在一个文件中工作,而不是在其他文件中工作

javascript - 如何使用 Node.JS 将文件移动到目录?

javascript - 使不同页面的 jQuery 代码静态化

javascript - 像 Twitter 一样水平调整 Div 大小

JavaScript DOM - 使用 NodeList 并转换为数组

javascript - 悬停在表格中的单元格时突出显示特定单元格

javascript - 单击按钮时将表达式插入和删除到 div 中

javascript - 导出时重命名下载文件

javascript - 当您返回浏览器时如何避免重新计算值(value)?

javascript - 在更改 $.prop ('name' 之前 $.append )? (名称属性未在 Chrome 中显示 "Elements")