我有以下代码:
function Show() {
this.showId = $("#meta-show-id").val();
this.title = $("#meta-title").val();
this.season = $("#meta-season").val();
this.episode = $("#meta-episode").val();
this.storageId = $("#meta-show-id").val() + '-' + $("#meta-season").val() + '-' + $("#meta-episode").val();
this.torrents = [];
this.putioId = null;
this.status = null;
this.subtitle = null;
}
Show.prototype = {
constructor: Show,
checkStorage: function() {
var storage = new Storage();
storage.get(this.storageId, function(data){
if (jQuery.isEmptyObject(data)){
console.log("empty");
}
else {
this.subtitle = data.subtitle;
}
});
}
}当我在object上调用object方法时,方法在chrome.storage.sync中检查数据,并设置object this.subtitle property。
但这似乎不起作用,this.subtitle值不会改变。
我做错了什么?
发布于 2014-05-02 09:32:40
这是一个正常的结果,它的发生是因为范围的变化。我不知道Storage是否有您自己的实现(因为它与getItem一起使用,而不是get),但是无论如何,您正在调用一个方法,我猜它会调用作为第二个参数提供的函数,对吗?
因为这个函数是从其他地方调用的,所以this不是您想要的对象。
下面是一个简单的例子:http://jsfiddle.net/6c2e6/1/
查看日志,看看this是什么。这是窗口,因为我的test函数在顶层。
https://stackoverflow.com/questions/23424334
复制相似问题