Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodejsnewrequire()_Javascript_Node.js_Webstorm - Fatal编程技术网

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'));