gpt4 book ai didi

javascript - ES6 类和 module.exports

转载 作者:数据小太阳 更新时间:2023-10-29 04:11:18 28 4
gpt4 key购买 nike

最近我在 nodeJS 实现中看到了这种模式,其中我们的模块有以下代码:

class Foo {
bar() {
console.log('bar');
}
}
module.exports = Foo;

然后当我做一个 require 最后说 new 来创建类的一个实例。

var Foo = require(./foo);
var myFoo = new Foo();
myFoo.bar();

根据我的说法,这种模式将在每次调用时继续创建 Foo 类的多个实例。

另一种模式可能是我在 foo.js 中习惯的模式。

module.exports = {
bar: function() {
console.log('bar');
}
};

然后我只需要调用 bar。

var foo = require(./foo);
foo.bar();

问题是这两个行为是否相同?第二种模式是否会在我每次需要并在对象上调用 bar 时继续创建对象?

在案例 1 中创建单例模式不是一个好主意吗,因为我们在其他语言中已经习惯了,如果它已经创建过一次,我们会继续提供相同的实例?

最佳答案

This pattern according to me will keep creating multiple instances of class Foo, everytime it is called.

是的,这就是目的。尽管 new Foo(); 在您的示例中也只执行一次。

would these two behave the same?

没有。

Will the second pattern keep creating objects everytime I require and call bar on the object?

没有。 require() 调用被缓存,它们每次都返回相同的模块。

Isn't creating singleton pattern a good idea?

不,如果单例包含任何状态,它很少是一个好主意。您的示例没有,但是在 Node.js 中通常使用 classes 的地方。

关于javascript - ES6 类和 module.exports,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39527436/

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