Javascript实现困境:寻找具有方法覆盖解决方案的类
作者:互联网
我不是Java专家.我已经开发了一个操作页面,使用一个函数为我的一些JS代码定义一个类(如here所述).此类非常复杂,有助于计算对象位置.现在已经过测试并可以运行.
我正在研究新页面,我想重用该课程.但是,对于每个页面,至少应重写此类的一种方法(如Java中的方法).我读过另一个SO问题,即不可能覆盖Javascript中的方法.
我当时正在考虑修改类原型,但是如果这样做,所有类实例都将被修改.
我非常不愿意为每页重复我的课程代码.有没有很好/优雅的解决方案来解决这个问题?谢谢.
解
因此,考虑到ŠimeVidas在Adam Rackis解决方案之上的评论:
function Base(){}
Base.prototype.foo = function() { alert("base"); };
function Derived() {}
Derived.prototype = Object.create( Base.prototype );
Derived.prototype.foo = function() { alert("overridden"); };
var b = new Base();
var d = new Derived();
b.foo();
d.foo();
解决方法:
您可以重载Javascript中的函数.创建一个新的函数构造函数,该函数构造函数从具有要重载的方法的函数继承,然后在派生函数的原型上更改方法.
它看起来像这样:
function Base(){}
Base.prototype.foo = function() { alert("base"); };
function Derived() {}
//Derived.prototype = new Base(); //not ideal - see the comments
Derived.prototype = Object.create(Base.prototype); //grab MDN shim for older IE
Derived.prototype.constructor = Derived;
Derived.prototype.foo = function() { alert("overridden"); };
var b = new Base();
var d = new Derived();
b.foo();
d.foo();
标签:function-overriding,javascript,class 来源: https://codeday.me/bug/20191101/1986804.html