对象功能不是一个功能

时间:2012-01-09 19:23:16

标签: javascript oop function object

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 个答案:

答案 0 :(得分:4)

那是因为thisplugin.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();

答案 1 :(得分:2)

在调用init的上下文中,这可能是其他内容。

尝试使用plugin.UpdateUIplugin.Status代替,它始终引用正确的函数。

相关问题