MooTools:父对象调用子方法

时间:2013-03-04 13:00:18

标签: javascript mootools

我正在开始一个项目,我将主要为Web应用程序开发前端GUI,并决定使用MooTools代替jQuery,因为它具有更好的OOP功能。然而,在测试时我从Java的开发人员的角度来看遇到了一些奇怪的东西。这是问题所在:

var Parent = new Class({
    initialize: function() {
        console.log("Parent constructor call!");
    },
    show: function() {
        console.log("From Parent!");
    },
    someParentMethod: function() {
        console.log("Some parent method");
        this.show();
    }
});

var Child = new Class({
    Implements: Parent,
    initialize: function() {
        console.log("Child constructor call!");
    },
    show: function() {
        console.log("From Child!");
    },
    display: function() {
        this.show();
        this.someParentMethod();
    }
});

var c = new Child();
c.display();

输出结果如下:

Parent constructor call!
Child constructor call!
From Child!
Some parent method
From Child!

现在我在这里有点困惑......最后一行不应该是“来自父母!”?

1 个答案:

答案 0 :(得分:3)

不,那就是多态性应该如何运作。即使您正在调用Parent类中定义的方法,您仍然处于Child 实例中,因此调用Child中的重写方法。