javascript - 我应该在 es6 中新建一个 utils 类吗?
问题描述
我已经声明了一个类,例如:
export default class Utils {
static deepClone(): object {
return {}
}
}
所以当我想使用 deepClone 时,我可以:
// First One
import Utils from './Utils';
export default class Element {
constructor(){
this.utils = new Utils()
}
create(){
return this.utils.deepClone()
}
}
或:</p>
// Second One
import Utils from './Utils';
export default class Element {
constructor(){
this.utils = Utils
// this is an optional
// in my child class I need't to import Utils
// I can use this.utils.deepClone() directly
}
create(){
return Utils.deepClone()
}
}
我想知道哪个是暗示 Element 类的更好方法
期待您的回复,我感激不尽
解决方案
第二种方法更正确,但它有一个问题,您应该创建一个Utils类的实例来使用不是静态方法的每个属性。
您没有创建实例的类的输出是一个函数而不是原型对象。
./Utils.js
export default class Utils {
static deepClone(): object {
return {}
}
public deepExtend() {
// deepClone code
}
}
在另一个文件中使用:
import Utils from './Utils';
export default class Element {
constructor(){
this.utils = new Utils();
}
create(){
return Utils.deepClone()
}
extend(){
return this.utils.deepExtend()
}
}