在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使用原型继承,即从其他对象派生新对象,而不是从“类”派生.此外,JS中的每个函数都是C语义中的“虚拟”,因为它的this指针取决于函数的调用方式,而不是函数的定义位置.