在控制器类Main
中实例化新类时,应如何构造JS代码。
解决方案:
答:在创建新类时传递参数 - new Options(args)
- 让Options
的构造函数调用自己的方法。
B:创建新类并在对象上调用类的方法。
稍后我会在其他课程中使用Options
中的属性。
// A
class Main {
constructor(options) {
this.options = new Options(options);
{ firstProperty, secondProperty } = this.options;
this.another = new Another(firstProperty, secondProperty);
}
}
// B
class Main {
constructor(options) {
this.options = new Options();
const firstProperty = this.options.methodA(options);
const secondProperty = this.options.methodB(options);
this.another = new Another();
const anotherPropety = this.another.methodA(firstProperty);
(...)
}
}
答案 0 :(得分:0)
出于解耦的目的,我建议第三种选择。
//main.js
class Main {
constructor(options) {
this.options = options;
// all instances of class would have:
this.options.foo = 'bar'
}
method() {
return `${this.options.foo} - ${this.options.setup}`
}
}
// example.js
const options = new Options({setup: 'options'});
const example = new Main(options);
console.log(example.method());
这使您可以将依赖项注入给定的类,这使得为代码编写测试变得更加简单。它还为您提供了(只要您维护一个通用界面)以后的Options
替换NewAwesomeOptions
的好处,而不必在任何地方找到您可能已将其硬编码到类中的任何地方。< / p>