node.js(四 --- 全局对象)

  在浏览器javescript中,通常window是全局对象,而在node.js中的全局对象是global,所有的全局对象除了global本身之外,都是global对象的属性。

  在node.js中同样的我们可以直接访问global的属性。

  global最根本的作用是作为全部变量的宿主。若要成为全局变量需要满足一下条件:

    (1): 在最外层定义的变量;

     (2): 全局对象的属性;

    (3): 隐式定义的变量(未定义直接赋值的变量)

 

  _filename:

    表示当前正在执行的脚本的文件名。它将输出文件所在的位置的绝对路径,且和命令行参数所指定的文件名不一定相同。如果在模块中,返回的值是模块文件的路径。

 

  _dirname:

    表示当前执行脚本所在的目录;

 

  setTimeout(cb, ms):

    该全局函数在指定的毫秒(ms)树后执行指定的函数(cd),而且该函数只执行一次指定的函数,返回一个代表定时器的句柄值。

 

  clearTimeout(t):

    该全局函数用于停止一个之前通过setTimeout()创建的定时器,参数t就是指这个定时器。

 

  setInterval(cd,ms):

    该全局函数在指定的毫秒数后执行指定的函数(cb),返回一个代表定时器的句柄值。 可以使用clearInterval(t)来清除。

 

  console:

    console用于提供控制台标准的输出,它是由internet Explorer的Jscript引擎提供的调试工具,后来逐渐成为浏览器的实施标准。 node.js用它向标准输出流(stdout)或者错误输出流(stderr)输出字符。

    console对象的方法:

        (1):console.log():用于向标准输出流打印字符并以换行符结束;

        (2):console.info():作用是返回信息行消息;

        (3):console.error():输出错误消息。控制台在出现错误时会显示是红色的叉子;

        (4):console.warn(): 输出警告信息。控制台出现黄色的惊叹号。

        (5):console.dir(): 用来对一个对象进行检查(inspect),并以易于阅读和打印的格式显示;

        (6):console.tiem(): 输出时间,表示计开始;

        (7):console.timeEnd(): 结束时间,表示计时结束;

        (8):console.trace(): 当前执行的代码在堆栈中的调用路径,这个测试函数运行很有帮助,只要给想测试的函数里面加入console.trace就行了;

        (9):console.assert(): 用于判断某个表达式或变量是否为真,接收两个参数,第一个参数是表达式,第二个参数是字符串。只有当第一个参数为false,才会输出第二个参数,否则不会有任何结果;

 

  process:

    该对象描述当前node.js进程状态的对象,提供了一个与操作系统的简单接口。

    process属性:

      (1):stdout: 标准输出流;

      (2):stderr: 标准错误流;

      (3):Stdin: 标准输入流;

      (4):argv:该属性返回一个数组,由命名行执行脚本时的各个参数组成。它的第一个成员总是node,第二个成员是脚本文件名,其余成员是脚本文件的参数;

      (5):execPath: 返回执行当前脚本的Node 二进制文件的绝对路径;

      (6):execArgv: 返回一个数组,成员是命令行下执行脚本时,在node可执行文件与脚本文件之间的命令行参数;

      (7):env: 返回一个对象,成员为当前shell的换将变量;

      (8):exitCode: 进程退出时的代码,如果进程优通过 process.exit()退出,不需要指定退出码;

      (9):version: node版本号;

      (10):versions: 一个属性,包含了node的版本和依赖;

      (11):config: 一个包含用来编译当前node执行文件的javascript配置选项的对象;

      (12):pid: 当前进程的进程号;

      (13):title: 进程名字,默认是node;

      (14):arch: 当前cpu的架构:'arm'、'ia32'或者'x64';

      (15):platform: 运行程序所在的平台系统'drawin'、'freebsd'、'linux'、'sunos'或'win32';

      (16):mainModule: require main的备选方法。 不同点,如果主模块在运行时改变,require main 可能会继续返回老的模块;

    

    process方法:

      (1)abort(): 这将导致node触发abort事件,会让node退出并生成一个核心文件;

      (2)chdir(): 改变当前工作进程的目录,如果操作失败抛出异常;

      (3)cwd(): 返回当前进程的工作目录;

      (4)exit(code): 使用指定的code结束进程。如果忽略,将会使用 code0;

      (5)getgid(): 获取进程的群组表示;获取到的是群组的数字id,而不是名字;

      (6)setgid(id): 设置进程的群组标识。

      (7)getuid(): 获取进程的用户标识。这是数字的用户id,不是用户名;

      (8)setuid(): 设置进程的用户标识。 接收数字ID或字符串名字,如果指定了群组名,会阻值等待解析为数字ID;

      (9)getgroups(): 返回进程的群组id数组。 Posix系统不一定有,但是node.js肯定有;

      (10)setgroups(groups): 设置进程的群组ID. 这是授权操作,所有要有root权限;

      (11)initgroups(user, extra_group): 读取/etc/group,并初始化群组访问列表,使用成员所在群组。这是授权操也要root权限;

      (12)kill(): 发送信号给进程;

      (13)memoryUsage(): 返回一个对象,描述了node进程所有的内存状况,单位为字节;

      (14)nextTick(callback): 一旦当前事件循环结束,调用回调函数;

      (15)umask(): 设置或读取进程文件的掩码;子进程从父进程继承掩码。如果mask参数有效,返回旧的掩码。否则,返回当前掩码;

      (16)uptime(): 返回node已经运行的秒数;

      (17)hrtime(): 返回当前进程的高分辨时间,形式为[sconds,nanoseconds]数组。它是相对于过去的任意时间。该值与日期无关,因此不受时钟漂移的影响。主要用途是可以通过精确的时间间隔,来衡量程序的性能;

 

    process对象最常用的成员方法:

      (1): exit 当进程准备退出时触发。

      (2): beforeExit 当node清空事件循环,并且没有其他安排是触发这份事件,通常来说,当没有进程安排时node退出,但是beforeExit的监听器可以异步调用,这样node就会继续执行;

      (3): uncaughtException 当一个异常冒泡回到事件循环,触发这个事件。如果给异常添加了监听器,默认的操作(打印堆栈跟踪嘻嘻并退出,)就不会发生。

      (4): signal事件: 当进程几首到信息时就触发。

      例如:

      process.on('exit',function(){ console.log('退出码为:',code)})

      退出状态码:

        (1): Uncaught: Fatal Exception 有未捕获异常,并且没有被域或uncaughtException处理函数处理;

        (2): Unused:  保留;

        (3): Internal JavaScript Parse Error:  javaScript的源码启动node进程引起解析错误。

        (4): Internal JavaScript Evaluation Failure:   javaScript的源码启动node进程,评估时返回函数失败;

        (5): Fatal Error:  v8里致命的不可恢复的错误,通常会打印到stderr;

        (6): Non-function Internal Exception Handler: 未捕获异常,内部异常处理函数不知为何设置为 on-function,并且不能被调用;

        (7): Internal Exception Handler Run-Time Failure: 未捕获的异常,并且异常处理函数处理时自己抛出了异常。例如process.on('uncaughtException')或domain.on('error')抛出了异常。

        (8): Invalid Argument: 可能是给了未知的参数,或者给的参数没有值。

        (9): Internal JavaScript Run-Time Failure: javaScript的源码启动node进程时抛出错误;

        (10): Invalid Debug Argument:设置了参数--debug-brk,但是选择了错误接口;

        (11): Signal Exits: 如果node接收到致命信号,比如: sigkill 或 sighup,那么退出代码就是128加信号代码。

posted @ 2018-12-07 14:19  mumengchun  阅读(245)  评论(0编辑  收藏  举报