如何使用ES6语法重载库类

时间:2019-04-17 19:54:29

标签: javascript inheritance ecmascript-6

我的项目中有不同的对象,这些对象扩展了库中的其他对象。 库的对象扩展了库的Object类。

所以我们有以下架构:

// The library object class
class Object {

}

// The library object1 class that extends object library class
class Object1 extends Object{

}

// The library object2 class that extends object library class
class Object2 extends Object{

}


// My object class that extends Object1 library class
class MyObject extends Object1{

}

// My second object class that extends Object2 library class
class MySecondObject extends Object2{

}

我的问题是,如何在不修改库(节点模块)代码的情况下,使用es6语法在我使用的库的“对象”类中添加方法。

在es5中,我将执行以下操作:

MyLib.Object.prototype.myNewMethod = function () {
}

为了制作

const o = new MyObject();
o.myNewMethod();
const o2 = new MySecondObject();
o2.myNewMethod();

感谢帮助。

1 个答案:

答案 0 :(得分:0)

是您要找的东西吗?

// The library object class
class Object {
  myNewMethod() {}
}

即使使用ES6,您仍然可以使用Object.prototype

Object.prototype.myNewMethod = function() {}

但是正确的方法是让原始基类保持原样,并使用继承。

class Object1 extends Object {
  myNewMethod() {}
}