Node.js学习笔记——事件处理机制&事件环机制

EventEmitter类

所有可能触发事件的对象都是一个继承了EventEmitter类的子类的实例对象。

EventEmitter类各种方法

激发事件
  • emitter.on(event,listener)
  • 或emitter.addListener(event,listener)
  • 或emitter.once(event,listener) //一次
    发生event就执行listener
  • emitter.listener(event)
    返回由该事件的所有事件处理函数构成的数组。
删除触发事件
  • emitter.removeListener(event,listener)
  • emitter.removeAllListener(event)
手工触发某个对象的一个事件
  • emitter.emit(event,parameter1,parameter2,…)
var http=require('http');
var server=http.createServer();
server.on('custom',function(a,b,c){
    console.log(a+b+c);
});
server.emit('custom','asd','fgh','gh');
Console:
C:\Users\kingsley\Desktop\新建文件夹> node hello.js
asdfghgh
获取指定事件的事件处理函数的数量
  • EventEmitter.listenerCount(emitter,event)
var http=require('http');
var events=require('events');//引入events模块
var server=http.createServer();
server.on('custom',function(a,b,c){
    console.log(a+b+c);
});
server.emit('custom','asd','fgh','gh');
console.log(events.EventEmitter.listenerCount(server,'custom'));
Console:
C:\Users\kingsley\Desktop\新建文件夹> node hello.js
asdfghgh
1
EventEmitter类自身所拥有的事件

任何时候,当对继承了EventEmitter类的子类实例对象绑定/取消事件处理函数时,都将触发EventEmitter类的newListener/removeListener事件。

emitter.on('newListener',function(e,f) {      })
emitter.on('removeListener',function(e,f) {      })
//e是被绑定的事件名,f是被绑定的事件处理函数代码

例子:

var http=require('http');
var events=require('events');//引入events模块
var server=http.createServer();
server.on('newListener',function(e,f){
    console.log(e+'事件+了一个事件处理函数');
    console.log(f);
});
server.on('removeListener',function(e,f){
    console.log(e+'事件-了一个事件处理函数');
    console.log(f);
});
function test(){
    console.log('hello world');}
server.on('custom',test);
server.removeListener('custom',test);

Console:
C:\Users\kingsley\Desktop\新建文件夹> node hello.js
removeListener事件+了一个事件处理函数
[Function]
custom事件+了一个事件处理函数
[Function: test]
custom事件-了一个事件处理函数
[Function: test]
PS C:\Users\kingsley\Desktop\新建文件夹>

模块

从模块外部访问模块内的成员

“单纯”访问
  • exports对象
将模块定义为
  • module.exports
//hello.js
var _name,_age;
var name='',age=3;
var foo=function(name1,age1){
    _name=name1;
    _age=age1;
}
foo.prototype.age=age;
module.exports=foo;//导出类
//index.js
var foo=require('./hello.js');
var object=new foo("jack",20);
console.log(object._age);	//undefined(因为没有用prototype,所以是私有变量)
console.log(object.age);	//3
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值