Function Prototype

本文深入探讨了JavaScript的高级编程技巧,包括事件监听、异步编程、模块化开发、性能优化等方面,提供了丰富的实战案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


思考???
var IDispatchable = {		
	map: function(handler) {
		return this.dispatch(function(args, callback) {
			callback.call(this, handler.apply(this, args));
		});
	},
	
	filter: function(handler) {
		return this.dispatch(function(args, callback) {
			if (handler.apply(this, Array.slice(args))) {
				callback.apply(this, args);
			}		
		});
	},
	
	throttle: function(delay) {
		var timer;
		return this.dispatch(function(args, callback) {
			var 				
				me = this
			;
			
			clearTimeout(timer);
			timer = setTimeout(function() {
				callback.apply(me, args);
			}, delay);
		});
	},
	
	delay: function(delay) {
		return this.dispatch(function(args, callback) {
			var 
				me = this
			;
						
			setTimeout(function() {
				callback.apply(me, args);
			}, delay);
		});
	},
		
	numb: function(delay) {
		var is_numb = false;
		return this.dispatch(function(args, callback) {
			if (!is_numb) {
				is_numb = true;
				callback.apply(this, args);
				setTimeout(function() {
					is_numb = false;
				}, delay);
			}
		});
	}
};




Function.prototype.dispatch = function(dispatcher) {
	var fn = this;	
	return function() {
		var callback = Array.pop(arguments);		
		fn.apply(this, Array.arrayPush(arguments, function() {
			dispatcher.call(this, arguments, callback);
		}));
	};
};




Function.proto(IDispatchable);


调用方式如:


……
_display: function(items) {
		var selected_items = this.selected_items;
		MultipleAutoComplete.superclass._display.call(this, filter(items, function(item) {
			return !find(selected_items.getData(), function(o) {
				return o.value == item.value
			});
		}));		
	},
……




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值