1.util 全局变量
1.1util.inherits(constructor,superConstructor)
这里是一个实现对象间原型继承的函数。
代码如下:
声明一个People对象
var util=require('util');
function People(){
this.name = 'people name';
this.age=20;
this.sayHello=function(){
console.log('hello '+this.name + ' this year is '+this.age);
}
}
//通过原型链增加 showName方法
People.prototype.showName=function(){
console.log(this.name);
}
//实例化一个对象
var objPeople = new People();
//调用方法
objPeople.showName();
objPeople.sayHello();
//打印一下对象
console.log(objPeople);
效果如下:
继承People 对象
//新建一个对象
function Student(){
this.name='student name';
}
//继承People
util.inherits(Student,People);
//实例化
var stu =new Student();
//调用 方法
// stu.sayHello(); //该方法不是通过原型链声明,报错找不到
stu.showName();
//打印一下对象
console.log(stu);
******注意********
如果不是通过原型链实现的方法是没有被继承下来的。
1.2、util.inspect(obj,[showHidden],[depth],[colors])
该方法是见任意对象装欢成字符串方法,通常用于调试和错误输出,它最少接受一个参数object.
shoeHidden:可选,true 会输出更多隐藏信息
depth: 标识最大的递归层数,默认2层,指定null则打印全部。
color:true,输出格式会以ANSI颜色编码。
2、event 事件驱动
event 是nodejs最重要的模块,没有之一。原因是Nodejs 本身架构就是事件式的,而它提供了唯一的接口,所以就成为了Nodejs事件编程的基石。event模块不仅用于用户代码与Nodejs下层事件循环的交互,还几乎被所有的模块依赖。
2.1 事件发射器
event模块只提供了一个对象。events.EventEmitter。EventEmitter 的核心就是事件发射与事件监听器功能的封装。EventEmitter 的每一个事件由一个事件或若干个参数组成,事件名是一个字符串,通常表达一定的语义。对于每个事件,EventEmitter 支持若干个事件监听器。当事件发射时,注册到这个事件的事件监听器被依次调用,事件参数作为函数参数传递。
var events=require('events');
// 实例化事件对象
var emitter = new events.EventEmitter();
// 注册事件监听1
emitter.on('somEvent',function(arg1,arg2){
console.log('Listener1',arg1,arg2);
});
// 注册事件监听2
emitter.on('somEvent',function(arg1,arg2){
console.log('Listener2',arg1,arg2);
});
emitter.emit('somEvent','can',1992);
2.2、error 事件
EventEmitter 定义了一个特殊的事件error,它包含错误的含义,我们在遇到异常的时候通常会发射error事件,当error 事件发射时,
EventEmitter 规定弱国没有相应的监听器,Node.js 会把它当成异常,退出程序并且打印调用栈,我们一般要发射error的事件对象设置监听器,避免遇到错误后整个程序奔溃。
代码:
var events=require('events');
var emitter = new events.EventEmitter();
emitter.emit('error');