全局对象
javascript的全局对象是window,他及其所有属性都可以在程序的任何地方访问。即全局变量。
而在node中全局对象是global,所有全局变量都是global对象的属性,包括其本身。
global最根本的作用是作为全局变量的宿主。
- 全局变量应该满足的条件:
- 在最外层定义的变量
- 全局对象的属性
- 隐式定义的变量(未定义直接复制的变量)
在node里不可能在最外层定义变量,因为所有的用户代码都属于当前模块的,而模块本身不是最外层上下文。
- process
process是一个全局变量,他是global的属性,是用来描述当前node进程状态的对象,提供了一个与操作系统的简单接口。通常用到在你血本地命令行程序的时候。
process对象的一些最常用的成员方法:-
process.argv
是命令行参数数组,第一个元素是node,第二个参数是脚本文件名,从第三个参数开始每一个元素是一个运行参数。 -
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)的功能是为事件循环设置一项任务。
-
- console
console用于提供控制台标准输出。- console.log() :向标准输出流打印字符并以换行符结束
- console.error(): 向标准错误流输出。
- console.trace(): 向标准错误流输出当前调用栈。
常用工具util
util是一个node核心模块,提供常用的函数集合。
-
util.inherits()继承
是一个实现对象间原型继承的函数,用法:var util = require('util'); function Base(){ this.name = 'base'; this.base = 1990; this.sayHello = function(){ console.log('hello' + this.name); }; } Base.prototype.showName = function(){ console.log(this.name); }; function Sub(){ this.name = 'sub'; } util.inherits(Sub, Base); var objBase = new Base(); objBase.showName(); objBase.sayHello(); console.log(objBase); var objSub = new Sub(); objSub.showName(); /*objSub.sayHello();*/ console.log(objSub);
Sub只能继承Base在原型中定义的函数
-
util.inspect()
是一个将任意对象转换为字符串的方法,通常用于调试和错误输出。var util = require('util'); function Person(){ this.name = 'yehuihui'; this.toString = function(){ return this.name; }; } var obj = new Person(); console.log(util.inspect(obj)); console.log(util.inspect(obj, true));