gpt4 book ai didi

javascript - Node - 工厂或构造函数,还是两者都不?

转载 作者:行者123 更新时间:2023-12-03 08:01:03 26 4
gpt4 key购买 nike

我目前正在阅读有关模块的 Node 文档并遇到了这段代码。

文档说以下是导出构造函数 - 但没有 New 关键字来实例化该对象。作为初学者,这让我有点困惑。它是一个构造函数吗?

如果是这样,为什么没有 New 关键字?提前致谢。

//CODE USING MODULE

var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());

// THE MODULE
// assigning to exports will not modify module, must use module.exports

module.exports = function(width) {
return {
area: function() {
return width * width;
}
};
}

最佳答案

我认为在这个例子中,作者只是指从模块导出顶级函数的模式。当您需要该模块时,您必须调用此函数。这个顶级函数将闭包中的值传递给它返回的任何函数。

如果你像这样编写调用代码可能会更清楚:

var square = require('./square.js')(2);
square.area();

将此与模块不返回顶级函数的情况进行比较。区域函数需要传递宽度参数:

var square = require('./square.js');
square.area(2);

这个例子有点做作。模块中的每个函数都可以访问宽度变量。有什么大不了的。但想象一下传递诸如数据库连接之类的东西。您可以看到该模式与面向对象语言中的构造函数完成了大部分相同的事情,或者实际上与使用 new 关键字构造 javascript 对象的方式相同。

关于javascript - Node - 工厂或构造函数,还是两者都不?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34571329/

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