Показать сообщение отдельно
  #4 (permalink)  
Старый 20.01.2015, 22:51
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Привыкай к необычному поведению 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.
__________________
В личку только с интересными предложениями
Ответить с цитированием