导出默认新对象

问题描述

是否保证export default new object(),其中对象是某种类型(例如日期),始终返回相同的对象?

// date.js
export default new Date()
// foo.js
import date from './date'
// bar.js
import date from './date'

可以预期date中的foo.jsdate中的bar.js是等价的吗?所以 import date from './date'一个单身人士?

上面的 export default new Date() 是否等同于 pre-es6 时代的 module.exports = new Date()

解决方法

是的,它总是同一个对象。在任何给定的脚本运行中,您可以假设文件的顶层,例如:

// date.js
export default new Date()

只运行一次,如果文件被导入,则不会再运行。进一步导入该文件将导致 date.js 的导出可导入,但不会再次运行 date.js