나는 다중 "페이지"phonegap 응용 프로그램을 가지고 있으며 코드를 제대로 작성하려고하므로 아래의 객체에 전체 2 페이지 코드를 캡슐화했습니다. 하지만 populateDB
, errorCB
및 successCB
을 page2_Obj
의 메서드로 사용하면 saveData에서 찾을 수 없습니다. 이러한 함수를 saveData 자체의 멤버로두면 모든 것이 잘 수행됩니다. 그래서 내 이유는 다음과 같습니다.
1. 왜 saveData는 형제를 볼 수 없습니까?
2. 이러한 함수를 saveData의 멤버로 두는 것이 옳은가요? 아니면이 작업을 수행하는 더 좋은 방법이 있습니까?
3. saveData의 멤버로 해당 함수를 두어 메모리가 누출 되었습니까?객체의 메소드에 addEventListener
function page2_Obj() {
this.bindEvents = function() {
var obj = document.getElementById('savebtn');
obj.addEventListener('click', this.saveData, false);
this.unbindEvents = function() { /* blah */ }
this.populateDB = function(tx) {
/* blah */
}
this.errorCB = function(err) {
alert("Error: "+err.code+ ' '+err.message);
}
this.successCB = function() {
alert("success!");
}
this.saveData = function(){
var db = window.openDatabase("Database", "1.0", "PhoneGap Demo", 200000);
db.transaction(this.populateDB, this.errorCB, this.successCB);
}
}
감사
이 this.' 각 기능에'사용의 목적은 무엇인가 – frank
나는'이와 기능을 선언하고있어 그래서 그들은 그것들에 접근하기 위해 page2_Obj와 _trying_의 메소드가된다. saveData with'this' – user3702014
당신은'save' 메쏘드를 넘겨주고 있습니다 만, 원래 그것을 참조했던'this'에 대한 참조를 유지하지 않습니다. –