Nodejs中exports与module.exports的区别
来源:互联网 发布:书慧淘宝培训 编辑:程序博客网 时间:2024/05/01 14:06
下面先来看个例子:
var a = { name : 'a', fun : function(){ console.log(this.name); }};var b = a;a.fun();b.fun();//输出a ab.name = 'b';a.fun();b.fun();//输出b bb = {name:'c' ,fun : function(){ console.log(this.name);}};a.fun();b.fun();//输出b c
从上面的例子可以明显知道对象a与对象b的关系,a才是真正的对象,而b只是a的引用,即当b.name的值改变会使的a.name的值也跟着改变,所以第二个才会输出b b;当吧被重新赋值的时候,会重新申请一块内存,所以b.name的值改变后不会影响到a.name的值,而module.exports就相当于是上述例子中的a,而exports就相当于是上述例子中的b,即它们之间的区别是:
1.exports只是module.exports的引用。
2.exports的生存周期是当前模块的执行时间,而module.exports生存周期则是当前程序的执行时间
3.require()返回的是 module.exports 而不是 exports
4.module.exports 初始值为一个空对象 {}
每一个Nodejs的执行文件都会自动地创建一个module对象,同时module.exports会创建一个叫exports的属性,初始值为空对象{}。exports和module.exports指向同一个内存,但require()返回的是module.exports而不是exports,比如你只是给导出一些属性,即对其指向的内存进行修改的时候,使用exports和module.exports都可以得到相同的结果;但是当你不再是对其指向的内存进行修改,而是覆盖(让其指向一个新的内存)的时侯,以下例子作为解释:
log.js
Print = { log:function(){console.log("Hello World!")}}module.exports = Print;exports = Print;
main.js
var p = require('./log');console.log(p);p.log();
{ log: [Function: log] }Hello World!
而将log.js中的module.exports = Print;注释掉的时候,输出:
{}TypeError: p.log is not a function
0 0
- NodeJS中module.exports与exports的区别
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports与module.exports的区别详细介绍
- Nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别
- nodejs中exports与module.exports的区别详细介绍
- nodejs中exports和module.exports区别
- HDU 3037 Saving Beans 组合数取模 Lucas定理
- A duplicate insert block exists for class "COneValuDlg" in the source files
- 查找某个文件,获取路径
- 创建快捷方式的问题?
- 原创cygwin安装合集
- Nodejs中exports与module.exports的区别
- view类不见了,fileview里也没有对应的.h和.cpp文件,编译也不正常
- ProperSheet调用按钮事件
- Atom安装并配置C\C++开发环境
- Dialog问题
- Intel+Nvidia双显卡笔记本Linuxmint18下安装CUDA+OpenCV+Caffe安装记录
- Linux之含互斥量线程封装(接口思想)
- Java的内存回收
- Partition Problem