我在JavaScript中尝试OOP。
var UiElementManagerClass = function() {
... };
UiElementManagerClass.prototype = {
...
OnTabStripSelected : function (sender, args) {
switch (args.get_tab().get_index()) {
case 1:
...
var newdata = this.InitData(); // <- this here
...
break;
default:
...
break;
}
},
... };
...
var UiMgrCustCtgyList = null;
$(document).ready(function () {
UiMgrCustCtgyList = new UiElementManagerClass();
...
UiMgrCustCtgyList.InitData = function () {
return DataClass.create();
};
在运行时,在OnTabStripSelected()中,我想调用InitData()但它抛出exp,它是未定义的。
答案 0 :(得分:1)
你的代码完全坏了,你试图在MyClass.prototype上设置东西并从MyClass中调用它....我已经重写了你的代码:
var MyBaseClass = function(){};
MyBaseClass.prototype = {
Mtd1: function(){
this.AbstractMtd2();
},
AbstractMtd2: function(){
alert('original abstractMtd2');
}
}
var subClass = new MyBaseClass();
subClass.AbstractMtd2 = function() {
alert('overwriting abstractMtd2');
}
答案 1 :(得分:0)
我的评论中的链接解释了它的价值以及如何传递闭包或绑定函数。我的猜测似乎是问题所在。既然你没有发布调用函数的方法,我必须给出最好的猜测。
如果您正在使用Chrome,我建议您尝试记录您感兴趣的一些变量。在控制台选项卡的开发人员工具中,您可以看到它们的值。例如:
console.log(this);