在 JavaScript 中导出实例化类的替代方案?

问题描述 投票:0回答:1

根据这个在JavaScript中导出实例化类是不好的做法吗?,不建议导出实例化类。

如果是这样,我想问一下我的以下实现是否可以作为替代方案。

我的班级:

export default class RouterConfig{
    constructor(header = '', parameters = []){
        this.path = parameters.reduce((accumulator, current) => `${accumulator}/:${current}`, header)
    }

    path: string;

    generateURL(data = {}){
        return this.parameters.reduce((accumulator, current) => `${accumulator}/${data[current]}`, `/${this.header}`)
    }
}

所以不要像这样导出:

const route1 = new RouterConfig('abc', ['param_C', 'param_O', ])
export default route1 

这是否意味着我需要像这样导出它:


const route2 = new RouterConfig('def', ['param_G'])

export const header       = route2.header
export const parameters   = route2.parameters
export const path         = route2.path
export const generateURL  = route2.generateURL.bind(route2)
javascript node.js
1个回答
0
投票

导出类实例并不是一个坏习惯,它的行为就像一个Singleton

注意:如果您希望阻止此实例被任何使用者修改,您可以在导出它之前调用 Object.freeze

const route1 = Object.freeze(new RouterConfig('abc', ['param_C', 'param_O', ]))
export default route1 
© www.soinside.com 2019 - 2024. All rights reserved.