• 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加信号代码。

  • 相关阅读:
    Failed to read auto-increment value from storage engine错误的处理方法
    今天测试了一下 sqlalchemy 性能
    PIL The _imaging C module is not installed
    Windows下C语言调用dll动态链接库
    Linux下动态库和静态库的生成和使用
    安卓中WebKit的使用
    php使用curl扩展发送get和post请求示例
    注意笔记
    Linux下Apache2.2和PHP5的安装配置
    PHP文件上传学习
  • 原文地址:https://www.cnblogs.com/mufc/p/10082683.html
Copyright © 2020-2023  润新知