js实现对象自定义事件,触发,on监听事件的方式

Object自定义事件,自定义触发方式,on监听

闭包实现:

	(function(scope){
		var listenerList = { 
			//插件事件数组
			"message":function(e){
				console.log( e )
			}
		 };
		var ev = {
			dispatch : function(eventKey){
				 var args = Array.prototype.slice.call(arguments,1);
				 listenerList[eventKey].apply(this,args);
				 return this;
			 },
			listener : function(eventKey, callback) {
				 if(typeof eventKey ==="string"&& typeof callback==="function"){
					listenerList[eventKey] = callback;
				 }
				 return this;
			 }
		}
		var Bob = function(options){
			var _this = this;
			var config = {
				debug:false,
				...options
			}
			this.on = ev.listener;
			this.trigger = ev.dispatch;


			if(config.debug){
				this. trigger("message",{a:"hello"});//自执行一下
			}
			
			return this;
		}

        //实现Bob的各类方法主体
        //fn....

		this.Bob = Bob;

})(window);

使用方式:

var bob = new Bob({debug:false});
bob.on("message",function(args){
	 console.log( this )
     console.log("事件参数信息",args);
 })


bob.trigger("message",{a:"senbo"});//测试一下

 

你可能感兴趣的:(大前端开发,js)