在我正在解决的一个难题中,有一个任务来确定下面的类的基类
class MyClass extends BaseClass {
result(a, b) {
this.a = a;
this.b = b;
return 100 - this.a + this.b;
}
}
let m = new MyClass();
m.result(10, 20) === 90;
m.result(20, 10) === 110;
我不需要准备好解决,我需要解释如何才能获得基类定义。
答案 0 :(得分:0)
可能是这样的:
class BaseClass {
set a(v) { this._a = 30-v }
get a( ) { return this._a }
set b(v) { this._b = 30-v }
get b( ) { return this._b }
}
或者这个:
class BaseClass {
set a(v) { this._b = v }
get a( ) { return this._a }
set b(v) { this._a = v }
get b( ) { return this._b }
}
实现这一目标的方法有很多:
class BaseClass {
constructor ( ) {
this.i = -1;
}
set a(v) { this.i++; }
get a( ) { return (2-this.i)*10 }
set b(v) { }
get b( ) { return (this.i+1)*10 }
}
class MyClass extends BaseClass {
result(a, b) {
this.a = a;
this.b = b;
return 100 - this.a + this.b;
}
}
let m = new MyClass();
console.log( m.result(10, 20) === 90 );
console.log( m.result(20, 10) === 110 );
另一个示例和预期输出可以大大缩小解决方案系列。我提供的第一个和第二个示例在提供其他数字时表现不同,第三个示例取决于调用result
的次数而不是传递给它的参数。
答案 1 :(得分:0)
您需要的只是Object.getPrototypeOf
,例如
Object.getPrototypeOf(MyClass) === BaseClass
ES6类语法将结果构造函数的[[Prototype]]
设置为父类。