首页 > 解决方案 > 访问导出的模块

问题描述

拥有这样一个简单的模块(exports.js):

module.exports.val1 = "boz";
exports.val2 = "bar";

module.exports.fun1 = function Something() {
  console.log("bla bla");
};

exports.fun2 = function Something() {
  console.log("bla bla");
};

exports = "abc"; //1
module = "def"   //2

console.log(module);
console.log(exports);

和导入它的文件(index.js):

var imp = require("./exports")
console.log(imp)

我得到输出:

def 
abc 
{val1: "boz", val2: "bar", fun1: ƒ Something(), fun2: ƒ Something()}

导入如何在索引文件中访问/定义,因为它在模块文件本身的#1#2上被覆盖(从模块日志中获取这两个字符串可以观察到什么)?

标签: javascriptnode.js

解决方案


我相信这就像你用一个对象调用一个函数一样。该函数获取对象引用的副本,因此它可以操作对象,所有重新分配所做的只是在其他地方的函数点中制作引用的本地副本。

function caller() {
   var obj = {}
   callMe(obj);
   obj.name; // "Hello"

}

function callMe(obj) {
   obj.name = "Hello";
   obj = {};
}

请注意,调用者传入的 obj 不受“callMe”中重新分配的影响。请参阅“按值传递”。


推荐阅读