javascript - 如何使用 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();
感谢帮助。
解决方案
是你要找的吗?
// The library object class
class Object {
myNewMethod() {}
}
即使使用 ES6,您仍然可以使用Object.prototype
Object.prototype.myNewMethod = function() {}
但正确的做法是让原来的基类保持原样,使用继承。
class Object1 extends Object {
myNewMethod() {}
}
推荐阅读
- node.js - 如何从 express.js 迁移到 nest.js,逐个路由
- c - copy_to_user() 不断打印消息
- perl - 如何在 perl 函数中发送和接收字符串、数组和哈希
- python - 如何在python中取消列出多个列表
- javascript - IE11 问题的 Gulp & Babel polyfill Promises
- arrays - 将多维数组传递给函数错误
- r - 分隔R中的所有重复列
- python - Matplotlib 饼图与爆炸不圆
- python - python中函数内的IF循环
- facebook - 有没有办法在 iframe 中嵌入 Facebook/Twitter 帖子/视频?