发布与订阅代码实现


发布与订阅代码实现

1、实现思路

1、绑定自定义事件:
	首先需要一个对象,用来保存绑定的方法,将需要执行的方法加入该对象中
2、触发自定义事件:
	运行对象中指定的绑定对象
3、运行一次:
	修改执行的方法,将其绑定为只要执行就解除绑定的方法
4、解绑方法:
	从缓存对象中删除该类型的方法

2、代码实现

function Event() {
	this.cache = {}
}

Event.prototype.on = function(type,handle) {
	if(this.cache[type]) {
		this.cache[type].push(handle)
	} else{
		this.cache[type] = [handle]
	}
}

Event.prototype.emmit = function() {
	// 
	let type = arguments[0]
	let params = [].slice.call(arguments,1)
	
	if(this.cache[type]) {
		let len = this.cache[type].length
		// 依次执行函数
		for(let i=0;i