新手求教,var Pomelo = module.exports = {};
发布于 11 年前 作者 chenyl107 4039 次浏览 最后一次编辑是 8 年前

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 = {}

相关的帖子:http://cnodejs.org/topic/4faf88ee9f281d96650030aa

啊,懂了,谢谢

回到顶部