常见对象

全局作用域

在浏览器环境下,使用var所定义的变量会成为全局对象(window)的一个属性。

定义的变量属于 window 对象的一个属性,定义的方法属于 widnow 对象的一个方法。

-w192

在 Node 环境下,不存在 window 对象,取而代之的是 global 对象。使用var所定义的变量同样会成为 global 对象的一个属性,如下:

```js

var i = 5; undefined console.log(i); 5 undefined console.log(global.i); 5 undefined ```

理解“全局可用”

在 Node 中,提供的一些全局可用的变量,函数和对象。这里所谓的全局就是指不需要进行模块加载,可以直接使用的,其中包括全局作用域的函数和对象。这些函数和对象都可以看作是 global 对象的属性或者方法。

```js

console.log(console === global.console); true undefined ```

除此之外,还包含了另一种不在全局作用域,但是在每个模块作用域中都存在的变量、函数和对象。它们不是global 对象的属性或者方法。

js console.log(__dirname); // /Users/Jie/Desktop/NPM_test console.log(global.__dirname); // undefined console.log(__dirname === global.__dirname); // false

用一张图形来说明,如下:

-w666

全局对象

在 Node 中最顶级的对象就是 global 对象,其次 global 对象的一些属性对应的值也是对象,并且这些对象是全局可用的,所以这样的对象我们也称之为全局对象。这里介绍几个常见的全局对象。

global 对象

最顶层的对象,诸如 console,process 等对象都是该对象的一个属性。有几个比较常用的全局方法,在浏览器环境下也是存在的,如下:

setTimeout(cb, ms): 在指定的毫秒(ms)数后执行指定函数(cb)。setTimeout 只执行一次指定函数。setTimeout 返回值可以作为 clearTimeout 的参数。

clearTimeout(t): 用于停止一个之前通过 setTimeout 创建的定时器。参数 t 是通过 setTimeout 函数创建的计算器。

setInterval(cb, ms): setInterval 和 setTimeout 类似,不过 setInterval 会在每 ms 毫秒后(并非精确的 ms 毫秒后)执行一次 cb。setInterval 返回值可以作为 clearInterval 的参数。

clearInterval(t): 用于停止 setInterval 定时器,这样回调函数就不会被执行了。

console 对象

console 是 global 全局对象的一个属性,其自身也是一个对象,常见的方法如下:

console.info([data][, ...]): 该命令的作用是返回信息性消息,这个命令与 console.log 差别并不大,除了在 chrome 中只会输出文字外,其余的会显示一个蓝色的惊叹号。

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

console.warn([data][, ...]): 输出警告消息。控制台出现有黄色的惊叹号。

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

console.time(label): 输出时间,表示计时开始。

console.timeEnd(label): 结束时间,表示计时结束。

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

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

注:有关 console 对象更多说明,可参见博文:https://segmentfault.com/a/1190000000481884

process 对象

在 Node.js 中提供了 process 模块来处理与进程相关的内容。进程可以看作是一个正在运行的应用程序。例如前面我们搭建的 Node.js 服务器,启动之后就是一个进程。

使用 process 模块可以截获进程的异常、退出等事件,也可以获取进程的当前目录、环境变量、内存占用等信息,还可以执行进程退出、工作目录切换等操作。

process.cwd(): 查看应用程序当前目录。

js console.log(process.cwd()); // /Users/Jie/Desktop

process.chdir("目录"): 改变应用程序目录。

js console.log(process.cwd()); // /Users/Jie/Desktop process.chdir("../") console.log(process.cwd()); // /Users/Jie

process.stdout: 标准输出流,其中 console.log()方法就是在此基础上进行的一层封装。

js process.stdout.write('Hello'); console.log('World'); // HelloWorld

process.stderr: 标准错误流,和 stdout 的作用差不多,不同的是它是用来打印错误信息的,我们可以通过它来捕获错误信息。

js process.stderr.write('错误内容1'); console.error('错误内容2'); // 错误内容1错误内容2

process.stdin: 标准输入流,可以通过注册事件的方式来获取输入的内容。

js process.stdin.on('readable', function () { let chunk = process.stdin.read(); if (chunk !== null) { process.stdout.write('你输入的内容为: ' + chunk); } });

process.exit(code): 退出程序。

process.stdxxx.setEncoding(编码): 设置编码。在我们的输入输出的内容中有中文的时候,可能会有乱码的问题,这是因为编码不同造成的。在这种情况下需要为流设置编码。

js process.stdin.setEncoding(编码); process.stdout.setEncoding(编码); process.stderr.setEncoding(编码);

各模块通用变量

上面有讲过,所谓各模块通用变量、方法或者对象,是指各个模块都有,但是不属于 global 对象的属性或者方法。这里简单介绍几个这样的变量。

__dirname表示当前文件所在的目录,__filename表示当前正在执行的脚本的文件名。如下:

js console.log(__dirname); // /Users/Jie/Desktop/NPM_test console.log(__filename); // 

posted @ 2020-06-27 20:32  格萨德  阅读(36)  评论(0)    收藏  举报