我想问一下如何在像C#这样的javascript中实现虚函数
通过下面的这个例子,我希望得到一个'B'警报,而不是'A'.
function A() {
this.virtualFunction();
}
A.prototype.virtualFunction = function() {
alert('A');
};
//-------------------------------------
function B() {}
B.prototype = new A();
B.prototype.virtualFunction = function() {
alert('B');
};
var b = new B();Run Code Online (Sandbox Code Playgroud)
如果我们在instanced之后调用函数,就像这样,那么它没关系,但我需要"在构造函数内部"
var b = new B();
b.virtualFunction();Run Code Online (Sandbox Code Playgroud)
因此,首先要意识到JavaScript不会使用与C#相同的语义.试图让它这样做会让你心痛; 你最好学习如何在JS中完成工作.事实上,大多数人并没有尝试在JS中做很多继承类型的东西,而是赞成组合(这实际上是我熟悉的所有OO语言中的最佳实践).
也就是说,您可以对代码进行一些改进.
function A() {
this.virtualFunction();
}
A.prototype.virtualFunction = function() {
alert('A');
};
//-------------------------------------
function B() {
A.call(this);
}
B.prototype = Object.create(A.prototype);
B.prototype.constructor = B;
B.prototype.virtualFunction = function() {
alert('B');
};
var b = new B();Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7700 次 |
| 最近记录: |