Использую jQuery для ajax-запросов. Т.к. хотелось бы применить ОО-подход, в качестве дополнительных аргументов передаю ссылку на объект (parent: this); но вот незадача, в колбэк функции попадает клонированный объект.
function Check() {
this.setStatus('e1');
this.setStatusMessage('error');
}
Check.prototype.setStatus = function(status) {
this.status = status;
}
Check.prototype.getStatus = function() {
return this.status;
}
Check.prototype.setStatusMessage = function(message) {
this.statusMessage = message;
}
Check.prototype.getStatusMessage = function() {
return this.statusMessage;
}
Check.prototype.setSuccessCallback = function(callback) {
this.successCallback = callback;
}
Check.prototype.check = function() {
this.setStatus('e2');
this.setStatusMessage("Wait...");
return $.ajax({
url: "/ajax/check_balance.php",
type: "GET",
dataType: "json",
cache: false,
parent: this,
success: function(json){
this.parent.setStatusMessage("Success");
this.parent.setStatus(0);
return this.parent.successCallback();
}
});
}
var cb1 = new Check();
cb1.setSuccessCallback(function(){
alert("Test1: " + cb1.getStatus()); // Test1: 0
});
cb1.check();
alert("Test2: " + cb1.getStatus()); // Test2: e2