节点-工厂或构造函数,或者两者都没有
Node - factory or constructor, or neither?
我目前正在阅读关于模块的节点文档,并发现了这段代码。
文档中说,下面是导出一个构造函数,但没有New关键字来实例化对象。作为一个初学者,这让我有点困惑。它是构造函数吗?
如果是,为什么没有New关键字?提前谢谢。
//CODE USING MODULE
var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());
// THE MODULE
// assigning to exports will not modify module, must use module.exports
module.exports = function(width) {
return {
area: function() {
return width * width;
}
};
}
我认为在这个例子中,作者只是指从模块导出顶级函数的模式。当您需要模块时,必须调用此函数。这个顶级函数将闭包中的值传递给它返回的任何函数。
如果你这样写调用代码,可能会更清楚:
var square = require('./square.js')(2);
square.area();
将此与模块不返回顶级功能的情况进行比较。面积函数需要传递宽度参数:
var square = require('./square.js');
square.area(2);
这个例子有点做作。模块中的每个函数都可以访问宽度变量。了不起的事但是想象一下传入数据库连接之类的东西。您可以看到该模式完成了与面向对象语言中的构造函数相同的事情,或者实际上是使用新关键字构建javascript对象的方式。
相关文章:
- 组合regex,同时匹配两者,而不是两者都匹配
- jQuery addClass中断延迟,或者jQuery延迟中断CSS转换,或者两者兼而有之
- 如何更改其内容的 Iframe 高度(两者都来自同一域)
- 重用另一个模板中的 Mustache 模板,如果两者都在一个 html 文件中定义
- 我在表单页面上有一个弹出窗口以及一个隐藏元素,具体取决于用户输入.两者都使用 jquery
- JS:有没有办法在点击函数中调用滚动函数,或者两者结合起来
- 元素及其父元素指定了 ng-单击,两者都被调用
- 如何从.js文件访问asp标记中的js变量(两者都在同一页上执行)
- 节点-工厂或构造函数,或者两者都没有
- jQuery函数在$(window).resize()或$(document).ready()上执行,而不是两者都执行
- 执行单击或双击.不是两者都有
- 从js调用php函数-两者都在单独的文件中
- 允许Javascript模块(类)与CommonJS、AMD或两者都不使用
- Bootstrap是css或javascript框架,或者两者兼而有之
- 转义字符的实现是否在JavaScript和PHP中类似地工作,或者两者的实现是否有任何差异
- 为什么两者都承诺's然后&catch回调被调用
- 确定属性在JavaScript中是getter还是setter(或两者都有)
- AngularJs或NodeJs或两者都有
- AngularJS和jQuery..两者都用有什么不对?
- localStorage返回NaN(而不是Number,或者什么都没有)