在动态加载一个模块后,即在解析了相应的promise 后,可以对结果使用函数或lambda表达式.我惊讶地发现模块实例(由promise提供)没有原型:
import("./module.js").then(x => {
console.log(typeof x); // yields 'object' as expected
console.log(x instanceof Object); // yields false !!
console.log(x.__proto__); // yields undefined !!
console.log(Object.getPrototypeOf(x)); // yields null !!
// but one can certainly access exported variables / functions
x.exportedFunction();
})
显然,尽管x
是一个"对象",但它似乎不是Object
实例,而且似乎根本没有任何原型.我甚至不知道这是可能的.Firefox/Chrome和Safari都给出了相同的输出(我在代码注释中详细说明的输出).有什么解释吗?这是在什么地方指定的吗?这个模块x
是什么样的对象?
Note:我不熟悉Typescript ,所以我不确定我的问题是否可以被认为是this one的重复
Edit:我刚刚意识到,对于静态导入到名称空间中的模块或通过import * as x from "./module.js"
获得的module object,可以获得相同的奇怪伪对象.虽然MDN提到了这些对象,但没有详细说明它们是什么.