标签:
<!DOCTYPE html>
<html>
<head>
<title>分布函数</title>
<script type="text/javascript">
Function.prototype.partial = function() {
var fn = this,//存储当前方法。即setTimeout
args = Array.prototype.slice.call(arguments);//用传入的实参使用call方法调用Array对象原型上的slice方法对传入转换为数组
//这里采用了闭包的方法,闭包内保存了fn 和args值。
return function() {//在调用函数原型链上的partial方法时返回这个匿名方法
var arg = 0;//定义并赋值为0,
for (var i = 0; i < args.length && arg < arguments.length; i++) {//循环调用partial方法时传入的参入
if (args[i] === undefined) {//如果又一个参数为undefined
args[i] = arguments[arg++];//将我们调用setTimeout时的参数进行替换
}
}
return fn.apply(this, args);//this(即window)对象使用applay方法调用之前存储的方法,并传入参数数组args。
}
}
window.onload = function() {
var delay = setTimeout.partial(undefined, 1000);
delay(function() {
alert(‘a‘);
})
}
</script>
</head>
<body>
</body>
</html>
标签:
原文地址:http://www.cnblogs.com/superZz/p/5792390.html