繁体   English   中英

Javascript,访问object.property

[英]Javascript, access object.property

在我的代码this.options回报与对象.all嵌套的对象。 但是,当我尝试使用this.options['all']this.options.all访问它时,我得到undefined

console.log(this.options):

Object
    all: Object
        cfg_autoresize: "true"
        cfg_autosave: "false"
        cfg_monthly_target: "monthly_target"
        cfg_statistics: "statistics"
        cfg_ticker: "ticker"
        cfg_yearly_target: "yearly_target"
    __proto__: Object

有人可以帮我解决这个问题,以前从未遇到过这个问题。 谢谢

编辑:

content_script,简化版

var Dashboard = Backbone.View.extend({
    el: $('body'),
    options: {},

    get_localStorage: function() {
        var _this = this;
        function handle_response(response) {_this.options.all = response.data;}
        chrome.extension.sendRequest({method: "allLocalStorage"}, handle_response);
    },

    initialize: function() {
        this.get_localStorage();
        console.log(this.options); // above object
        console.log(this.options.all); //undefined
    }
});

background.html,取自Google-chrome-extension文档,并进行了修改

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
    if(request.method == "allLocalStorage") {

        var options = {};

        for (var i=0, l=localStorage.length; i<l; i++){
            var key = localStorage.key(i);
            var value = localStorage[key];
            options[key] = value;
        }

        sendResponse({data: options}); 

    } else {
        sendResponse({}); 
    }
});

我非常希望有this.options有没有它内部的所有选项.all ,但它不会为我工作。

您能告诉我们看起来不正确的部分js代码(声明和对象访问)吗?

编辑:

啊,我知道了……在您调用get_localStorage()时; 由于handle_response函数在sendRequest完成之前尚未触发,因此可能未初始化该对象。

您可能想尝试以下方法:

get_localStorage: function(callback) {
    var _this = this;
    function handle_response(response) {
        _this.options.all = response.data;     
        callback(_this.options);
    }
    chrome.extension.sendRequest({method: "allLocalStorage"}, handle_response);
}

initialize: function() {
    this.get_localStorage(function(op) {
            console.log(op);
            console.log(op.all);
        }
    );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM