Javascript nodejsnewrequire()
这两条线是一样的吗Javascript nodejsnewrequire(),javascript,node.js,webstorm,Javascript,Node.js,Webstorm,这两条线是一样的吗 var myModule = new require('my-module') 以及: 前者帮助intelliJ Idea(或Webstorm)对方法(例如mongoose中的“model”)进行自动补全(至少它不会显示令人讨厌的黄色下划线,表示“未解析的函数或方法”在JavaScript方面,它们不相同。require()作为函数?看起来是这样的,但我还是建议不要这样做 使用new非常有用。require()将受到new使用的影响,因为该的内部值将发生变化 var foo
var myModule = new require('my-module')
以及:
前者帮助intelliJ Idea(或Webstorm)对方法(例如mongoose中的“model”)进行自动补全(至少它不会显示令人讨厌的黄色下划线,表示“未解析的函数或方法”在JavaScript方面,它们不相同。
require()
作为函数?看起来是这样的,但我还是建议不要这样做
使用new
非常有用。require()
将受到new
使用的影响,因为该的内部值将发生变化
var foo = {
path: '/foo/bar/',
require: function (module) {
console.log(this.path + module);
}
};
foo.require('baz'); // logs /foo/bar/baz
new foo.require('trev'); // logs undefinedtrev
目前,require()
似乎根本不使用此
(因为无论您是否更改此值,它的行为都不会改变)。但是,这不能保证将来会发生;它没有文档记录
TL;DR:不要使用它。实例化所返回的内容需要。
new
应该在实例化类或函数的新实例时使用,而不是其他方式。您几乎肯定不想实例化require
的实例
但是,如果您想实例化由require
返回的类/函数的实例,您可能可以执行以下操作:
var myModuleInstance = new (require('my-module'));
额外的括号表示您正在实例化返回的对象,而不是直接实例化相关的、可能的重复Trufa。我读了这个问题,我认为它比我的问题更具体。我只是想知道是否添加了关键字“new”在任何情况下都没有区别,仅此而已。@arg20您是否找到了解决IntelliJ/Webstorm问题的其他方法?
var myModuleInstance = new (require('my-module'));