这两条线是否相同?
var myModule = new require('my-module')
和
var myModule = require('my-module')
前者帮助intelliJ Idea(或Webstorm)对方法进行自动完成(例如"模型"在猫鼬中)(至少它没有显示恼人的黄色下划线,表示"未解决的功能或方法"
答案 0 :(得分:4)
就JavaScript而言,它们不一样。以require()
为功能? 看起来很,但我仍然建议不要这样做。
使用new
可以做很多事情under the hood。使用require()
会影响new
,因为this
的内部值会发生变化。
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()
似乎根本不使用this
(因为无论您是否更改此值,其行为都不会改变)。但是,未来不能保证这种情况;它没有记录。
TL; DR:不要使用它。
答案 1 :(得分:4)
require
返回的。 new
,否则不应该使用<require
。您几乎肯定不想实例化require
的实例。
但是,如果要实例化 var myModuleInstance = new (require('my-module'));
返回的类/函数的实例,则可以执行以下操作:
require
额外包含括号表示您正在实例化返回的对象,而不是直接实例化{{1}}。