Как перегрузить класс библиотеки, используя синтаксис es6 - PullRequest
1 голос
/ 17 апреля 2019

У меня в проекте есть разные объекты, которые расширяют некоторые другие объекты из библиотеки.Объект библиотеки расширяет класс 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 для добавления метода в класс «Object» библиотеки, которую я использую, без изменениякод моей библиотеки (модуль узла).

В es5 я сделал что-то вроде:

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

Чтобы сделать

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

Спасибо за помощь.

1 Ответ

0 голосов
/ 17 апреля 2019

Это то, что вы ищете?

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

Даже с ES6 вы все равно можете использовать Object.prototype

Object.prototype.myNewMethod = function() {}

Но правильный путь - оставить исходный базовый класс таким, какой он есть, и использовать наследование.

class Object1 extends Object {
  myNewMethod() {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...