Функция вызова ООП JavaScript из другой функции - PullRequest
0 голосов
/ 25 августа 2009
function MyClass(projectName) {
  this.projectName = projectName;
}

MyClass.prototype.createHttpRequestObject = function() {
  /* do something */
}

MyClass.prototype.submit = function(message, script, line) {
  httpRequest = this.createHttpRequestObject();
}

Ошибка 'this.createHttpRequestObject не является функцией' происходит из строки 'httpRequest = this.createHttpRequestObject ();'. Зачем? Что я делаю не так?

Ответы [ 2 ]

2 голосов
/ 25 августа 2009

То, как JavaScript интерпретирует это, отличается от того, что вы ожидаете. Он не ссылается на «оригинальный» объект, но на текущий контекст.

См. http://www.quirksmode.org/js/this.html для объяснения.

См. Также: jQuery / JavaScript путаница с указателем "this"

1 голос
/ 25 августа 2009

это должно работать, если вы правильно создали MyClass .. взгляните на приведенный ниже рабочий код ..

function testCall(){
   var ss = new MyClass("sam");
   ss.submit();
}

function MyClass(projectName) {
  this.projectName = projectName;
}

MyClass.prototype.createHttpRequestObject = function() {
    return "something";
}

MyClass.prototype.submit = function(message, script, line) {
  httpRequest = this.createHttpRequestObject();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...