首页 > 解决方案 > 我应该在 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 类的更好方法

期待您的回复,我感激不尽

标签: javascriptes6-class

解决方案


第二种方法更正确,但它有一个问题,您应该创建一个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()
    }
}

推荐阅读