gpt4 book ai didi

javascript - 通过 Node js 使用 CommonJS 模块化时,什么时候执行 Javascript 构造函数?

转载 作者:搜寻专家 更新时间:2023-11-01 00:41:01 24 4
gpt4 key购买 nike

在通过 Node 的模块的 CommonJS 实现中,我有这个 infantModule.js:

文件名:infantModule.js

var infant = function(gender) {
this.gender = gender;
//technically, when passed though this line, I'm born!
};

var infantInstance = new infant('female');

module.exports = infantInstance;

我的问题是:

这个模块的构造函数什么时候真正执行,考虑到其他模块使用这个infantModule,例如:

文件名:index.js -- 应用程序的入口点

var infantPerson = require('./infantModule');
// is it "born" at this line? (1st time it is "required")

console.log(infantPerson);
// or is it "born" at this line? (1st time it is referenced)

由于我的 infantModule 公开了一个现成的实例化对象,因此除 index.js 入口点之外的任何其他模块对该模块的所有其他 future 需求都将引用同一对象,其行为类似于应用程序中的共享实例,这样说对吗?

如果在底部的index.js中多了一行代码,比如:

infantInstance.gender = 'male';

我的应用程序中除 index.js 之外的任何其他模块,在未来的某个时间点需要 infantModule,将获取具有更改的性别属性的对象,这是正确的假设吗?

最佳答案

require 返回一个普通对象。当您访问该对象时,不会发生任何神奇的事情。

具体来说,第一次调用require()时,Node会执行所需文件的全部内容,然后返回其module.exports的值属性(property)。

关于javascript - 通过 Node js 使用 CommonJS 模块化时,什么时候执行 Javascript 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34498639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com