Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.12.2012, 19:36
Интересующийся
Отправить личное сообщение для ololosh Посмотреть профиль Найти все сообщения от ololosh
 
Регистрация: 25.07.2012
Сообщений: 27

функция is not a function
(подключен джейквери. Из него использую $.ajax)
Есть функция-конструктор:

function CreateModal() {
   this.content;

   this.getContent = function(data) {
      //...
   };

   this.showContent = function() {
      $.ajax({
         //...
         success: function(data) {
            this.content = this.getContent(data);
            //...
         }
      });
   };
}


Создаю объект от нее:

var obj = new CreateModal();


На строке this.content = this.getContent(data); браузер выдает мне ошибку:
TypeError: this.getContent is not a function

Почему? Как такое возможно? Ведь это ж функция. Интерпретатор ведь должен по цепочке замыканий найти эту this.getContent()

Последний раз редактировалось ololosh, 21.12.2012 в 19:45.
Ответить с цитированием
  #2 (permalink)  
Старый 21.12.2012, 20:25
Интересующийся
Отправить личное сообщение для ololosh Посмотреть профиль Найти все сообщения от ololosh
 
Регистрация: 25.07.2012
Сообщений: 27

Тогда и для свойства this.content нужно так же поступить в моём случае? Переделать его в self.content?

function CreateModal() {
   var self = this;

   this.content;

   this.getContent = function(data) {
      //...
   };

   this.showContent = function() {
      $.ajax({
         //...
         success: function(data) {
            self.content = self.getContent(data);
            //...
         }
      });
   };
}
Ответить с цитированием
  #3 (permalink)  
Старый 21.12.2012, 21:11
Интересующийся
Отправить личное сообщение для ololosh Посмотреть профиль Найти все сообщения от ololosh
 
Регистрация: 25.07.2012
Сообщений: 27

Если контекст вызова не наследуется через замыкание, почему тогда у меня срабатывает такой пример?

function Create() {
	this.content;

	this.getContent = function() {
		return "HELLO";
	};

	this.showContent = function() {
		this.content = this.getContent();
		alert(this.content);
	};
}

var obj = new Create();
obj.showContent();


По идее, в строчке
this.content = this.getContent();
я должен увидеть ошибку getContent is not a function
Но ее нету...
Ответить с цитированием
  #4 (permalink)  
Старый 21.12.2012, 22:03
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

прокэплю и скажу что

внутри обекта

{
     //...
     success: function(data) {
        this.content = this.getContent(data);
        //...
     }
}



в функции success слово this ссылается на сам этот обьект

{ success: function() {} }


а не на экземпляр класса

CreateModal

Судя по вашему сообщению, вы ну совсем не знаете javascript.

Освойте основы языка и вопрос отпадет сам, полностью или частично.
А с чем не справитесь - поможем.

На сайте javascript можно начать изучать с учебника, раздел Основы javascript.
Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/

Задавайте конкретные вопросы по ходу дела.
Ответить с цитированием
  #5 (permalink)  
Старый 21.12.2012, 23:53
Профессор
Посмотреть профиль Найти все сообщения от godofjavascript
 
Регистрация: 11.12.2012
Сообщений: 265

Сообщение от Дзен-трансгуманист
Если функция не вызвана как конструктор, то this ссылается на контекст вызова, болван.
Мне вот все интересно, этот пятушок что, действительно считает что $.ajax() вызывает метод success обьекта параметров как конструктор класса CreateModal)), или он так пошутил?

в голос ржал) доставил)))

UPD 1:
Регистрация: 18.06.2012
Не, он не притворяется пасоны)))))) он на самом деле ламо) ахахах

Последний раз редактировалось godofjavascript, 22.12.2012 в 09:51.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как работает функция Class godofjavascript Оффтопик 58 17.12.2012 09:49
self = this в обертке Class bFree Общие вопросы Javascript 31 17.11.2012 23:51
функция и несуществующий id Ankh Элементы интерфейса 4 10.02.2012 23:49
top is not a function function Opera, Safari и др. 2 18.01.2012 09:13
Обработчик события действует только на ссылки? Cuprum jQuery 29 10.08.2010 16:19