Men*_*hak 3 javascript require node.js
我的问题的核心是,有什么区别
var fs = new require('fs');
Run Code Online (Sandbox Code Playgroud)
和
var fs = require('fs');
Run Code Online (Sandbox Code Playgroud)
如果我new到处都使用所有模块,是否有任何影响或警告?
在使用Webstorm的时候,我注意到只有在我使用的时候才可以使用intellisense new require('fs').在我开始一直使用它以获得更好的开发体验之前,我想了解更多相关信息.
首先:不要混淆new require("...")(它调用require的构造函数)与new (require("..."))(其中调用的返回值的的require呼叫作为构造函数).你正在做第一个.
require不打算作为构造函数调用new.那不是Node-idiomatic,而且通常很奇怪.您不应该这样做,因为它会降低代码的可读性.未来的读者可能很容易误以为是new (require("..."))(即呼吁new对正在构造的返回 require),因为通常节点风格不使用new带require.
现在,我们来谈谈实际的副作用.
new导致函数运行其[[Construct]]内部方法,该方法采取以下操作:
使用thisset 调用函数,将其原型设置为函数prototype属性的新创建的对象
返回结果:
this对象返回值new require将require与其exports值非原始的所有模块相同(几乎任何模块都是如此;它们通常导出普通对象或函数,它也是一种对象).但是,在极少数情况下,模块会导出基元,然后new会拒绝您访问该值.
require(...)和之间唯一的另一个可能的区别new require(...)是new变量提供了不同的this值.但是,require似乎this完全忽略了它的价值.(注意Module.prototype.require- 与普通函数不同require- 确实使用了它的this值,但只有在需要模块的子模块时才使用它module.require(...).)
| 归档时间: |
|
| 查看次数: |
3094 次 |
| 最近记录: |