快速上手 - 全局对象

  • 作者:KK

  • 发表日期:2018.8.7


要点速读

  1. 全局对象是通过global.xxx来访问的,跟浏览器 JS 的window.xxx一样道理。

  2. Node 里面的全局对象也没多少,主要用到的就是processBuffer


快速了解

在浏览器的 JavaScript 中我们访问全局变量可以通过window.变量名来访问,可以说全局变量就是window对象的一个属性,而在 Node 里面你将这个window转换成global来想就可以了,只是这个 global 拥有的属性跟 window 不一样。

在一个普通的 Node 脚本里执行以下代码看看:

for(let key in global){
	console.log(key);
}

输出如下:

DTRACE_NET_SERVER_CONNECTION
DTRACE_NET_STREAM_END
DTRACE_HTTP_SERVER_REQUEST
DTRACE_HTTP_SERVER_RESPONSE
DTRACE_HTTP_CLIENT_REQUEST
DTRACE_HTTP_CLIENT_RESPONSE
COUNTER_NET_SERVER_CONNECTION
COUNTER_NET_SERVER_CONNECTION_CLOSE
COUNTER_HTTP_SERVER_REQUEST
COUNTER_HTTP_SERVER_RESPONSE
COUNTER_HTTP_CLIENT_REQUEST
COUNTER_HTTP_CLIENT_RESPONSE
global
process
Buffer
clearImmediate
clearInterval
clearTimeout
setImmediate
setInterval
setTimeout

全大写那些就是常量,而其它就是对象或全局函数了,一般加入一个新项目后,我会用这个看看这个项目有没有附加什么额外的全局变量上去。

而且当你访问一个未经声明的变量时,就会去global身上找,这个规则跟 JavaScript 是一样的。


process 对象

  • 退出进程

    这是进程对象,你想要结束进程不再往后面运行的话就调用process.exit(1),当然也可以不传入返回码参数。

  • 获取系统环境变量

    通过process.env可以得到环境变量,比如你想要系统的PATH变量值是吧:console.log(process.env.PATH)

  • 访问命令行参数

    我的执行命令是node t.js --user root,然后代码console.log(process.argv)输出如下:

    [ 'C:\\Program Files\\nodejs\\node.exe', 'D:\\pj\\test\\t.js', '--user', 'root' ]

  • 获取当前进程的工作目录

    console.log(process.cwd())


Buffer 对象

这是个处理数据流的时候才用到的对象,一般的代码里其实不经常出现,封装一些基础性组件时才用到,在这个基础阶段不作介绍,其实我也了解得不深。