根据这个在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)
导出类实例并不是一个坏习惯,它的行为就像一个Singleton。
注意:如果您希望阻止此实例被任何使用者修改,您可以在导出它之前调用 Object.freeze:
const route1 = Object.freeze(new RouterConfig('abc', ['param_C', 'param_O', ]))
export default route1