global:全局对象,是全局变量的宿主,所有的全局变量都在global对象的属性中。
全局变量的定义:A:在最外层定义的变量 如:var a=30; var b=50;
B:全局对象的属性 如: global:{a:30,b:50};
C:隐式定义的变量(未定义直接赋值的变量)如a=30;
process :是一个全局变量,是global全局对象的属性,用于描述nodejs进程状态的对象
process.argv 是命令行参数数组,第一个元素是 node,第二个元素是脚本文件名,从第三个元素开始每个元素是一个运行参数。
process.stdout 是标准输出流,通常我们使用的 console.log() 向标准输出打印字符,而 process.stdout.write() 函数提供了更底层的接口。
process.stdin 是标准输入流,初始时它是被暂停的,要想从标准输入读取数据,你必须恢复流,并手动编写流的事件响应函数。
process.nextTick(callback) 的功能是为事件循环设置一项任务,Node.js 会在下次事件循环调响应时调用 callback。Node.js 适合 I/O 密集型的应用,而不是计算密集型的应用,因为一个 Node.js 进程只有一个线程,因此在任何时刻都只有一个事件在执行。如果这个事件占用大量的 CPU 时间,执行事件循环中的下一个事件就需要等待很久,因此 Node.js 的一个编程原则就是尽量缩短每个事件的执行时间。process.nextTick() 提供了一个这样的工具,可以把复杂的工作拆散,变成一个个较小的事件。
console 用于提供控制台标准输出,它是由 Internet Explorer 的 JScript 引擎提供的调试
工具,后来逐渐成为浏览器的事实标准。Node.js 沿用了这个标准,提供与习惯行为一致的
console 对象,用于向标准输出流(stdout)或标准错误流(stderr)输出字符。
console.error():与 console.log() 用法相同,只是向标准错误流输出
console.trace():向标准错误流输出当前的调用栈。
util 是一个 Node.js 核心模块,提供常用函数的集合,用于弥补核心 JavaScript 的功能过于精简的不足。
util.inherits(constructor, superConstructor)是一个实现对象间原型继承的函数
JavaScript 没有提供对象继承的语言级别特性,而是通过原型复制来实现的
var util = require('util');
function Base() {
this.name = 'base';
this.base = 1991;
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); //Sub继承Base原型上的方法,不继承Base本身构造函数的属性和方法
var objBase = new Base();
objBase.showName(); //base
objBase.sayHello(); //hello base
console.log(objBase);//Base { name: 'base', base: 1991, sayHello: [Function] }
var objSub = new Sub();
objSub.showName(); //sub 继承了Base原型上的方法
objSub.sayHello(); //objSub.sayHello is not a function
console.log(objSub); //Sub { name: 'sub' } util.inspect
util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换为字符串的方法,通常用于调试和错误输出。它至少接受一个参数 object,即要转换的对象。
showHidden 是一个可选参数,如果值为 true,将会输出更多隐藏信息。
depth 表示最大递归的层数,如果对象很复杂,你可以指定层数以控制输出信息的多
少。如果不指定depth,默认会递归2层,指定为 null 表示将不限递归层数完整遍历对象。
如果color 值为 true,输出格式将会以 ANSI 颜色编码,通常用于在终端显示更漂亮
的效果。
var util = require('util');
function Person() {
this.name = 'byvoid';
this.toString = function() {
return this.name;
};
}
var obj = new Person();
console.log(util.inspect(obj)); //Person { name: 'byvoid', toString: [Function] }
console.log(util.inspect(obj, true));
//Person {
name: 'byvoid',
toString:
{ [Function]
[length]: 0,
[name]: '',
[arguments]: null,
[caller]: null,
[prototype]: { [constructor]: [Circular] } } }
util还提供了util.isArray()、util.isRegExp()、util.types.isDate()、util.isError() 四个类型测试工具util.format()等
const util = require('util');
util.isArray([]);// Returns: true
util.isArray(new Array());// Returns: true
util.isArray({});// Returns: false
//注意Array.isArray() 代替已经废弃的util.isArray()
util.types.isRegExp(/abc/); // Returns true
util.types.isRegExp(new RegExp('abc')); // Returns true
util.types.isDate(new Date()); // Returns trueutil.isError(new Error());// Returns: true
util.isError(new TypeError());// Returns: true
util.isError({ name: 'Error', message: 'an error occurred' });// Returns: false//注:util.types.isNativeError代替已经废弃的util.isError()util.format('%s:%s', 'foo', 'bar', 'baz');// Returns: 'foo:bar baz'