🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
总结: ~~~ 用一句话来说明就是,require只能看到的只有module.exports这个对象,它是看不到exports对象的,而我们在编写模块时用到的exports对象实际上只是对module.exports的引用。 ~~~ 例子: ~~~ var module = { exports:{ name:"我是module的exports属性" } }; var exports = module.exports; //exports是对module.exports的引用,也就是exports现在指向的内存地址和module.exports指向的内存地址是一样的 console.log(module.exports); // { name: '我是module的exports属性' } console.log(exports); // { name: '我是module的exports属性' } exports.name = "我想改一下名字"; console.log(module.exports); // { name: '我想改一下名字' } console.log(exports); // { name: '我想改一下名字' } //看到没,引用的结果就是a和b都操作同一内存地址下的数据 //这个时候我在某个文件定义了一个想导出的模块 var Circle = { name:"我是一个圆", func:function(x){ return x*x*3.14; } }; exports = Circle; // 看清楚了,Circle这个Object在内存中指向了新的地址,所以exports也指向了这个新的地址,和原来的地址没有半毛钱关系了 console.log(module.exports); // { name: '我想改一下名字' } console.log(exports); // { name: '我是一个圆', func: [Function] } ~~~