Функция объекта не является функцией - PullRequest
3 голосов
/ 09 января 2012
var plugin = {
    Init: function() {
        this.UpdateUI();
        if (this.Status() == 1) {
            ...
        } else {
            ...
        }
    },
    Status: function() {
        ...
    },
    UpdateUI: function() {
        ...
    }
}

Это основной код. Проблема в том, что при вызове Init появляются следующие ошибки:

this.UpdateUI is not a function
this.Status is not a function

Может кто-нибудь сказать мне, в чем проблема с моим кодом?

Ответы [ 2 ]

4 голосов
/ 09 января 2012

Это потому, что this внутри plugin.Init относится к plugin.Init, а не к plugin.Измените это следующим образом:

var plugin = {
    Init: function() {
        plugin.UpdateUI();
        if (plugin.Status() == 1) {
            ...
        } else {
            ...
        }
    },
    Status: function() {
        ...
    },
    UpdateUI: function() {
        ...
    }
}

Прототип:

function Plugin(){
  var self = this;

  this.Init = function() {
    self.UpdateUI();
    if (self.Status() == 1) {
      ...
    } else {
      ...
    }
  };
}

Plugin.prototype.status = function() {
            ...
  };
Plugin.prototype.UpdateUI: function() {
    ...
  }

var plugin = new Plugin();
2 голосов
/ 09 января 2012

В контексте, где вызывается init, это может быть что-то еще.

Попробуйте вместо этого использовать plugin.UpdateUI и plugin.Status, которые всегда ссылаются на правильные функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...