функция 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() |
Тогда и для свойства 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); //... } }); }; } |
Если контекст вызова не наследуется через замыкание, почему тогда у меня срабатывает такой пример?
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 Но ее нету... |
прокэплю и скажу что
внутри обекта { //... success: function(data) { this.content = this.getContent(data); //... } } в функции success слово this ссылается на сам этот обьект { success: function() {} } а не на экземпляр класса CreateModal Судя по вашему сообщению, вы ну совсем не знаете javascript. Освойте основы языка и вопрос отпадет сам, полностью или частично. А с чем не справитесь - поможем. На сайте javascript можно начать изучать с учебника, раздел Основы javascript. Возможно, вам также понадобится HTML - учебник есть, например, здесь: http://ru.html.net/tutorials/html/ Задавайте конкретные вопросы по ходу дела. |
Цитата:
в голос ржал) доставил))) UPD 1: Регистрация: 18.06.2012 Не, он не притворяется пасоны)))))) он на самом деле ламо) ахахах |
Часовой пояс GMT +3, время: 15:52. |