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
有人可以告诉我我的代码有什么问题吗?
答案 0 :(得分:4)
那是因为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();
答案 1 :(得分:2)
在调用init的上下文中,这可能是其他内容。
尝试使用plugin.UpdateUI
和plugin.Status
代替,它始终引用正确的函数。