在node中有一个全局变量global,它的作用和网页中的window类似:
-
在全局中创建的变量都会作为globle的属性保存
-
在全局中创建的函数都会作为globle的方法保存
当node在执行模块中的代码时,它会首先在代码的最顶部,如下代码:function(exports,require,module,__filename,__dirname){ //中间代码部分省略 }
实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个时参:
- exports
- 该对象用来将变量或函数暴露到外部
- require
- 函数,用来引入外部的模块
- module
- module代表的是当前模块本身
- exports就是module的属性
- __filename
- 当前模块的完整路径,通过此路径可以找到该模块
- __dirname
- 当前模块所在文件夹的完整路径
注意 module.exports==exports 本质上是一样的 没有区别
exports和module.exports:
- 通过exports只能使用.的方式来向外暴露内部变量
- exports.xxx=xxx
- 而module.exports既可以用过.的形式,也可以用过直接赋值的方式
- module.exports.xxx = xxx
- module.exports = { }
var obj = {};
obj.a={};
var a =obj.a;
a.name="name"
a=new object();
console.log(obj.a.name);