在C#中,我们有关于抽象方法的概念,以及如何在Javascript中应用它。例子,我有一个例子:

function BaseClass() {
    this.hello = function() {
        this.talk();
    }
    this.talk = function() {
        alert("I'm BaseClass");
    }
};

function MyClass() {
    this.talk = function() {
        alert("I'm MyClass");
    }
    BaseClass.call(this);
};

MyClass.prototype = new BaseClass();

var a = new MyClass();
a.hello();​

当对象是MyClass的实例时,BaseClass中的hello()函数如何从MyClass调用函数do()。警报结果必须为“我是MyClass”。请帮我。谢谢。

最佳答案

您可能要先调用“Base”构造函数:

function MyClass() {
    BaseClass.call(this);
    this.talk = function() {
        alert("I'm MyClass");
    }
}

否则BaseClass.talk将覆盖MyClass.talk

附带说明一下,在javascript中使用“类”的概念会适得其反,因为这不是该语言的工作方式。 JS使用原型(prototype)继承,即您从其他对象而不是“类”派生新对象。同样,从C++的 Angular 来看,JS中的每个函数都是“虚拟的”,因为它的this指针取决于函数的调用方式,而不取决于函数的定义位置。

10-01 16:45
查看更多