我想创建一个带有多个数据库表的PhoneGap-Application,这些表将被解析为Javascript-Objects,所以我编写了以下代码。
$(document).ready( function(){
var startpage = Object.create(Persons);
startpage.load();
});
var Page = {
db: window.openDatabase("database", "1.0", "My Database", 200000),
load: function(){
this.db.transaction(this.queryDB, this.errorCB);
},
errorCB: function(err){
alert("Error processing SQL: " + err.message);
}
}
var Persons = Object.create(Page, {
queryDB: {
value: function(tx){
tx.executeSql(
'SELECT * FROM PERSONS',
[],
this.createObjects, <-- Problem is here
this.errorCB
);
}
},
createObjects: {
value: function(tx, results){
// [...] parse results to objects
}
}
});
问题是queryDB方法中的“this”是对方法本身的引用,而不是对Object的引用。有谁知道我如何引用正确的方法?
谢谢!
答案 0 :(得分:2)
你想要做的事情就像这个问题中讨论的那样:
What does 'var that = this;' mean in JavaScript?
所以在人群中你会想要做一个
var that = this;
然后在queryDB函数中引用that.createObjects。