我无法理解以下两种风格是否有任何区别,哪个更可取,或者它们只是视觉上的不同。
样式 1 - 导出匿名函数,该函数返回以函数作为属性的 JavaScript 对象
module.exports = function(logger,db,config){
return {
getAByB : function(b,cb){
logger.log(b);
cb(undefined,'someting');
},
getName : function(cb){
db.fetch(function(res){
cb(res)
});
}
}
}
样式 2 - 导出带有属性的函数(老实说,我不明白为什么使用函数名称作为返回)
module.exports = function Something(logger,db,config){
Something.getAByB = function(b,cb){
logger.log(b);
cb(undefined,'someting');
}
Something.getName = function(cb){
db.fetch(function(res){
cb(res)
});
}
return Something;
}
另请解释一下第二种风格想要实现的目标。
最佳答案
两者不相同。
第一个将使用您指定的方法和属性创建一个新对象。这只能作为返回值访问。
var x = module.exports(1, 2, 3); // Object {getAByB: function...
console.log( module.exports.getAByB ); // undefined
module.exports(1, 2, 3).getAByB(4, 5); // works
第二个将把所有方法设置为可链接调用 module.exports
方法本身以及可立即链接的对象:
var y = module.exports(1, 2, 3); // function Something...
console.log( module.exports.getAByB ); // function getAByB...
module.exports(1, 2, 3).getAByB(4, 5); // works
关于javascript - 返回具有相同属性的函数对象或匿名对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26054972/