var Pomelo = module.exports = {};最后的= {}是什么意思。和var Pomelo = module.exports有什么区别
2 回复
{} 就是一个空的Object
var Pomelo = module.exports = {};
// 相当于以下代码
module.exports = {};
var Pomelo = module.exports;
两者的区别就是后者没有重新设置module.exports
的值。一般情况下这是没有问题的,但有时候会造成一些手误:
// 正常的模块写法,模块输出 ooxx() 函数
exports.ooxx = function () {
console.log('OOXX');
};
// 重置了module.exports
var OOXX = module.exports = {};
// 还是使用原来的方法写是没办法输出这个ooxx函数的,
// 因为此时的module.exports 和 exports 不是同一个对象
// 而载入模块时是读取module.exports作为其输出的
exports.ooxx = function () {
console.log('OOXX');
};
// 这样写法可以正常输出:
OOXX.ooxx = function () {
console.log('OOXX');
};
// 为了避免出错,可以这样:
var OOXX = exports = module.exports = {}