首页 > 解决方案 > 如何使用 es6 语法重载库类

问题描述

我的项目中有不同的对象,这些对象扩展了来自库的其他一些对象。库的对象扩展了库的 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();

感谢帮助。

标签: javascriptinheritanceecmascript-6

解决方案


是你要找的吗?

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

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

Object.prototype.myNewMethod = function() {}

但正确的做法是让原来的基类保持原样,使用继承。

class Object1 extends Object {
  myNewMethod() {}
}

推荐阅读