Javascript NodeJS:在函数中使用module.exports从另一个模块导出

Javascript NodeJS:在函数中使用module.exports从另一个模块导出,javascript,node.js,module,Javascript,Node.js,Module,简单的例子: file1 module.exports.foo = function(obj) { module.exports.obj = obj; } file2 file1 = require("file1") var something = {a: "a"}; file1.foo(something); //export "something" being a part of file2 上面的例子不起作用 我想要的基本上是一个module.exports助手,因为我计划了几

简单的例子:

file1

module.exports.foo = function(obj) {
  module.exports.obj = obj;
}

file2

file1 = require("file1")
var something = {a: "a"};
file1.foo(something); //export "something" being a part of file2
上面的例子不起作用

我想要的基本上是一个module.exports助手,因为我计划了几个用于整个对象“导出”的助手


谢谢

文件1.js中的模块
文件2.js中的实例不同

file1.js

module.exports.foo = function(obj) {
    module.exports.obj = obj; 
    return module;
}  
file2.js

console.log("running file2");

file1 = require("./file1");

var something = {a: "a"}; 
var moduleOfFile1 = file1.foo(something); //export "something" being a part of file2 

console.log("file1 module: " + moduleOfFile1.id);
console.log("file2 module: " + module.id);
控制台:

node file2.js
返回的
id
不同


更新

或者,为什么不更新file2.js以扩展其
模块.exports

File2.js

// well, you may copy `extend` implementation if you 
// do not want to depend on `underscore.js`
var _ = require("underscore");     
file1 = require("./file1");  

_.extend(module.exports, file1);

var something = {a: "a"};  
// or do something else

_.extend(module.exports, {
    obj: something
});
File3.js

file2 = require("./file2.js");
console.log(file2.obj.a);

您得到的是什么错误?您发布的代码完全符合您的预期。测试用例:
varf2=require('./file2');变量f1=需要('./file1');console.log(f1.obj)
输出
{a:'a'}
。当我试图从第三个文件访问“file2”模块时,“file2”模块为空。我想从file2导出对象,但导出操作发生在file1中的一个函数中foo
函数中的code>?另一个问题:为什么“this”是函数外的空对象?我认为“module.exports”应该属于“this”。可能有助于您理解JavaScript中令人困惑的
这个
。总之,
this
的值取决于访问它的位置。