Привыкай к необычному поведению this в JavaScript. Кратко говоря - куда будет указывать this зависит от того, кто и как вызывает функцию, а не от того где и как она объявлена.
this.get.call('хрень') - и внутри метода this указывает не на экземпляр ajax, а на 'хрень'.
Примерно тоже самое у тебя сейчас и происходит:
Сообщение от kilohertz_.
|
this.xhr.onreadystatechange = this.get;
|
Тут ты дал объекту xhr ссылочку на некую функцию. Теперь объект, когда получит ответ от сервера, вызовет этот метод, причем установит в качестве this - себя любимого!
Сообщение от kilohertz_.
|
if(this.xhr.readyState == 4) {
|
Тут this указывает на xhr, у которого нет свойства xhr. Исправь на if (this.readyState ...)
Еще раз: метод не знает, чьим "методом" он является. И вообще, в js нет методов. Есть просто функции.
Можешь жестко задать this таким образом:
this.xhr.onreadystatechange = this.get.bind(this);
И метод заработает без изменений.
Функция bind возвращает функцию с жестко прописанным this.