假设我有一个使用以下方法的类A
:
foo(x, options) {
const limit = options && options.limit ? options.limit : undefined;
const select = options && options.select ? options.select : {};
const paginate = options && options.paginate ? options.paginate : {};
const sort = options && options.sort ? options.sort : {};
const count = options && options.count;
const args = deepMerge({ x }, paginate);
return count ? this.model.find(args).count()
: this.model.find(args).limit(limit).select(select).sort(sort);
}
然后,我创建一个扩展B
的类A
。我有一个方法bar
与方法foo
几乎相同。
是否可以将方法bar
扩展为具有限制,选择,分页,排序和计数?我不想覆盖foo
类中的B
方法,因此我需要它使用不同的名称
答案 0 :(得分:1)
如果尚未覆盖this.foo()
上的foo()
方法,则可以使用B
,否则,可以使用引用父类的super
关键字实例super.foo()
,并且在两种情况下(无论是否覆盖)均有效。
class B extends A {
bar(){
super.foo();
}
}
免责声明:我假设:按类,您的意思是ES6类而不是ES5之前的原型。
工作示例:
class A {
foo() {
return 'value of A';
}
}
class B extends A {
// case you override the method
// super.foo() still points to the
// original A.foo() but you don't
// have to do this, it's just an
// example
foo() {
return 'value of B';
}
bar() {
const valueOfA = super.foo();
return valueOfA;
}
}
const b = new B();
console.log(b.bar())