我正在用JavaScript构建自己的库,并且我在考虑最终用户将如何使用它。通常,我将所有私有和公共功能放在一起,但是每当我这样做时,感觉随着班级的增加,班级变得越来越难以驾驭。我有一个尝试将它们分成单独的类的想法,我想知道这是否可以完成,它叫什么?
更具体地说,它看起来像这样。
ClassABase-这将包含所有主要代码/私有代码,我不希望我的用户直接访问以便正确使用该类。
ClassA继承自ClassABase-ClassA继承了基类的所有内容,但随后还将填充所有公开的方法。
我想我只是想要一些反馈,以了解是否已经完成,或者是否应该将所有内容都保留在原始类中。
答案 0 :(得分:1)
1)创建私有方法
2)创建必须被覆盖的方法
您无法在Javascript中创建必须被覆盖的抽象方法,但是您可以阻止调用这些方法,直到在子类中不覆盖它们为止
let Parent = class Parent {
constructor () {
}
parentMethod () {
throw new Error('Parent method cannot be called');
}
parentPrivateMethod () {
if(this instanceof Parent) {
console.log('parent can call me');
}
throw new Error('I am private');
}
parentPublicMethod () {
console.log('I am public');
this.parentPrivateMethod();
}
}
class Child extends Parent {
constructor () {
super();
}
parentMethod () {
console.log('I can be called');
}
}
let child = new Child();
child.parentMethod();
console.log('--------------');
child.parentPublicMethod();
console.log('--------------');
child.parentPrivateMethod();