首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript,access object.property

Javascript,access object.property
EN

Stack Overflow用户
提问于 2012-02-23 20:30:09
回答 1查看 217关注 0票数 0

在我的代码中,this.options返回嵌套了.all对象的对象。然而,当我尝试用this.options['all']this.options.all访问它时,我得到了undefined

console.log(this.options):

代码语言:javascript
复制
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,简化版本

代码语言:javascript
复制
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文档并进行了修改

代码语言:javascript
复制
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({}); 
    }
});

理想情况下,我希望在没有.all的情况下让this.options拥有所有的选项,但它不适合我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-23 20:41:32

你能给我们看一下js代码(声明和对象访问)中看起来不正确的部分吗?

编辑:

啊我明白了..。在调用get_localStorage()时,对象可能没有被初始化,因为在sendRequest完成之前handle_response函数还没有被触发。

您可能想要尝试下面这样的方法:

代码语言:javascript
复制
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);
        }
    );
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9413100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档