javascript:如何在原型函数中调用另一个函数

时间:2014-12-19 11:17:36

标签: javascript

我在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,它是未定义的。

2 个答案:

答案 0 :(得分:1)

你的代码完全坏了,你试图在MyClass.prototype上设置东西并从MyClass中调用它....我已经重写了你的代码:

http://jsfiddle.net/5h3yavru/

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);

Prototypical inheritance - writing up