эта вещь работает почти:Javascript класс вызова XMLHttpRequest внутри, то обработка onreadystatechange
function myClass(url) {
this.source = url;
this.rq = null;
this.someOtherProperty = "hello";
// open connection to the ajax server
this.start = function() {
if (window.XMLHttpRequest) {
this.rq = new XMLHttpRequest();
if (this.rq.overrideMimeType)
this.rq.overrideMimeType("text/xml");
} else
this.rq = new ActiveXObject("Microsoft.XMLHTTP");
try {
this.rq.onreadystatechange = connectionEvent;
this.rq.open("GET", this.source, true);
this.rq.send(null);
this.state = 1;
} catch (err) {
// some error handler here
}
}
function connectionEvent() {
alert("i'm here");
alert("this doesnt work: " + this.someOtherProperty);
}
} // MyClass
так что нет ничего более, чем иметь объект XMLHttpRequest в качестве члена моего класса, вместо глобально определены и ссылаются на него традиционным способом. однако внутри моей функции callEvent callback значение «this» теряется, хотя сама функция находится внутри myClass. Я также удостоверился, что объект, который я создаю из myClass, остается достаточно длинным (объявлен глобальным в скрипте).
во всех примерах использования классов javascript, которые я видел, «это» все еще доступно внутри внутренних функций. для меня это не так, даже если я выполняю свою функцию снаружи и делаю ее myClass.prototype.connectionEvent. Что я делаю не так? Спасибо.
использовать jQuery для отличного ajax. – sundowatch
Добро пожаловать в Stackoverflow :) Скорее используйте 4 пробела вместо вкладок для каждого отступа.Затем, когда вы копируете здесь код, вы должны отложить * полный * фрагмент с еще 4 пробелами. Вы можете сделать это, выбрав фрагмент, а затем нажав кнопку '010101' на панели инструментов редактора сообщений или клавишу Ctrl + K. – BalusC