首页 > 解决方案 > ESModules [object Module] 如何创建模块的实例?

问题描述

我对 JavaScript ESModules 有疑问。

import project from './project.js';
console.log(Object.prototype.toString.call(project));
// [object Object]
import * as project from './project.js';
console.log(Object.prototype.toString.call(project));
// [object Module]

示例项目

https://github.com/standard-software/parts-Node_Deno_ProjectTemplate/blob/v1.2.0/Backup/project04/test/test_source_3.js

我想做克隆或克隆深度模块。

我正在制作库 Parts.js 包括克隆/克隆深度。使用 cloneFunction.cloneObject

https://github.com/standard-software/partsjs/blob/v6.3.0/source/root/clone.js#L46

const projectClone = clone(project);
// isObject(project) === true -> no problem
// isModule(project) === true -> problem. I cant do clone.

属性副本没问题。我不能创建新的实例模块(类似对象)。

const projectClone = new Module() // this is error.

如何创建新的实例模块?

标签: javascript

解决方案


应该如下吗?您需要将其定义Module为导入语句的一部分。

import * as Module from './project.js';
const projectClone = new Module();

或者,反过来:

import * as Project from './project.js';
const projectClone = new Project();

相关:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#Creating_a_module_object


推荐阅读