javascript - 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]
示例项目
我想做克隆或克隆深度模块。
我正在制作库 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.
如何创建新的实例模块?
解决方案
应该如下吗?您需要将其定义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
推荐阅读
- mongodb - 如何在mongodb中关联子文档?
- python - python 正则表达式获取所有内容,直到特定字符串
- android-studio - 导航抽屉android studio的设计视图中未显示组件
- c# - C# 确定几个计时器中的哪一个已过期
- node.js - 如何根据属性数量在节点中动态创建 Azure 表查询?
- node.js - 是否可以通过节点 js 中的服务帐户连接托管在谷歌云平台中的 mongo db?如果是,该怎么做?
- excel - 如何使用excel函数查找产品的最新类别变化
- vue.js - Vue - 在 Chrome 开发工具中显示错误行
- python - Python:ImportError:无法为root用户导入模块
- java - java.lang.NoClassDefFoundError: java/lang/ModuleLayer