Node.js:全局对象

概要:本篇博客主要介绍了node.js中的全局对象。

  在JavaScript中,通常window是全局对象,而node.js中的全局对象是global,所有全局变量(除了global本身之外)都是global对象的属性。如:console、process。

1.全局对象与全局变量

  global最根本的作用是作为全局变量的宿主。满足以下条件:

  ●在最外层定义的变量;

  ● 全局对象的属性;

  ● 隐式定义的变量(未定义直接赋值的变量)。

2.process

  process是一个全局变量,即global对象的属性。它用于描述当前Node.js进程状态的对象,提供了一个与操作系统的简单接口。下面介绍一些process对象的一些最常用的成员方法。

  ▲ process.argv:命令行参数数组,第一个元素是node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。

console.log(process.argv);

  将以上代码存储为argv.js,通过以下命令行运行:

$ node argv.js 1991 name=byvoid --v "Carbo Kuo"
[
    ‘node‘,
    ‘/home/byvoid/argv.js‘,
    ‘1991‘,
    ‘name=byvoid‘,
    ‘--v‘,
    ‘Carbo Kuo‘
]

  ▲ process.stdout:标准输出流,通常我们使用的console.log()向标准输出打印字符,而process.stdout.write()函数提供了更底层的接口。

  ▲ process.stdin:标准输入流,初始时它是被暂停的,想要从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。

process.stdin.resume();

process.stdin.on(‘data‘,function(data){
    process.stdout.write(‘read from console: ‘ + data.toString());
});

  ▲ process.nextTick(callback):为事件循环设置一项任务,Node.js会在下次事件循环调响应时调用callback。

  Node.js进程只有一个线程,因此在任何时刻都只有一个事件在执行。如果这个事件占用大量的CPU时间。process.nextTick()提供了一个这样的工具,可以把复杂的工作拆散,变成一个较小的事件。

function doSomething(args , callback){
    somethingComplicated(args);
    callback();
}

doSomething (function onEnd(){
    compute();
})

  我们假设,compute()和somethingComplicated()是两个较为耗时的函数,以上的程序在调用doSomething()时会先执行somethingComplicated(),然后立即调用回调函数,在onEnd()中又会执行compute()。下面用process.nextTick()改写上面的程序:

function doSomething(args,callback) {
    somethingComplicated(args);
    process.nextTick(callback);
}

doSomething(function onEnd(){
    compute();
})

  改写的程序会把上面耗时的操作拆分成两个事件,减少每个事件的执行时间,提高事件响应速度。

  警告:不要使用setTimeout(fn,0)代替process.nextTick(callback),前者比后者效率要低得多。除此之外process还展示了process.platform、process.pid、process.execPath、process.memoryUsage()等方法,以及POSIX进程信号响应机制。

3.console

  console用于提供控制台标准输出。

  ▲ console.log( ):向标准输出流打印字符并以换行符结束。console.log()接受若干个参数,如果只有一个参数,则输出这个参数的字符串形式。如果有多个参数,则以类似于C语言printf()命令的格式输出。第一个参数是字符串,如果没有参数,只打印一个换行。

console.log(‘Hello world‘);
console.log(‘byvoid%diovyb‘);
console.log(‘byvoid%diovyb‘,1991);

运行结果为:

  ▲ console.error( ):与console.log()用法相同,只是向标准错误流输出。

  ▲ console.trace( ):向标准错误流输出当前的调用栈。

console.trace();

运行结果为:

时间: 2025-01-08 14:03:41

Node.js:全局对象的相关文章

7:Node.js 全局对象

原文出自:http://www.w3cschool.cc/nodejs/nodejs-global-object.html Node.js 全局对象 JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可 以在程序的任何地方访问,即全局变量. 在浏览器JavaScript 中,通常window 是全局对象, 而Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 我们在Node

Node.js 全局对象

JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量. 在浏览器 JavaScript 中,通常 window 是全局对象, 而 Node.js 中的全局对象是 global,所有全局变量(除了 global 本身以外)都是 global 对象的属性. 在 Node.js 我们可以直接访问到 global 的属性,而不需要在应用中包含它. 全局对象与全局变量 global 最根本的作用是作为全局变量的宿主.按照

13、Node.js 全局对象

主要用于调试,显示信息,重点看例子在浏览器 JavaScript 中,通常 window 是全局对象, Node.js 中的全局对象是 global ####__filename__filename 表示当前正在执行的脚本的文件名.它将输出文件所在位置的绝对路径,且和命令行参数所指定的文件名不一定相同. 如果在模块中,返回的值是模块文件的路径. ###__dirname__dirname 表示当前执行脚本所在的目录. ###setTimeout(cb, ms)setTimeout(cb, ms)

270 Node.js快速入门:Node.js 的组成,Node.js基础语法,Node.js全局对象global

var first = 'hello nodejs'; console.log(first); function fn (){ console.log('fn函数被调用了'); } fn (); for (var i = 0; i <5; i ++) { console.log(i); } if (true){ console.log('123'); } console.log('文件被修改了') global.console.log('我是global对象下面的console.log方法输出的

JS全局对象的属性

全局对象是最顶层的对象,在浏览器环境指的是window对象.在ES5中,全局对象的属性与全局变量是等价的. var str = "hello"; function test(){ alert(window.str); } window.str = "hello"; function test(){ alert(str); } 以上两段代码输出结果都是hello. 这种规定被视为是JS语言的一大问题,因为很容易不知不觉就创建了全局变量.在ES6中,var命令和func

Node.js自定义对象事件监听与发射

一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者设计模式来实现把事件监听器添加到对象以及移除,之前写OC那块的时候也有些观察者设计模式,在OC中也经常用到:通知中心.KVO,也很容易理解. .addListener(eventName,callback):将回调函数附加到对象的监听器中.当eventName的事件被触发时,回调函数被放置在事件队列

Node.js系列笔记4-(不定期更新)

Node.js全局对象 JavaScript中的特殊对象:全局对象,Global Object 它及其所有属性都可以在程序的任何地方访问 浏览器JavaScript中,通常window是全局对象,而Node.js的全局对象是global,所有全局变量(除了global本身以外)都是global对象的属性 ECMAScript定义,全局变量包括 在最外层定义的变量 全局对象的属性 隐式定义的变量(未定义直接赋值的) 定义全局变量时,这个变量会成为全局对象的属性,反之亦然 在Node.js中不可能在

Node.js的知识点框架整理

背景:因为appium是基于Node.js的,所以想看一下Node.js.但是发现很多资料的顺序看起来有点颠倒.然后就一面看资料一面整理了一下大概的知识点框架,希望对自己对别人有用. 本文不包含node.js的基本语法.node.js的基本语法和JavaScript基本一样,可以以后再单独整理一份基本语法的. Node.js是一个基于chrome V8的JavaScript运行时的环境 Node.js是事件驱动,非阻塞式I/O模型 Node.js使用npm包管理器 使用Node.js不仅实现了一

Node.js 教程

Node.js 教程nodejs简单的说 Node.js 就是运行在服务端的 JavaScript.Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台.Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好.谁适合阅读本教程?如果你是一个前端程序员,你不懂得像PHP.Python或Ruby等动态编程语言,然后你想创建自己的服务,那么Node.js是一个非常好的选择.No

清晰地去看 Node.js(二)

比较缓冲器拷贝缓冲区 路由指的就是我们要针对不同的URL有不同的处理方式,例如处理/start的业务逻辑和处理/upload模块 的业务:逻辑就 是不一致的. Node.js 模块系统:http://www.shouce.ren/api/view/a/3470 代码区: /** * 比较缓冲器 * buf1.compare(buf2); */ var buffer1 = new Buffer('ABC'); var buffer2 = new Buffer('ABCD'); var result