![](/img/trans.png)
[英]Unable to access JSON Element in Javascript via 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
有人可以帮我解决这个问题,以前从未遇到过这个问题。 谢谢
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
}
});
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.