var __sto = setTimeout;
window.setTimeout = function(callback, timeout, param) {
var args = Array.prototype.slice.call(arguments, 2);
var _cb = function() {
callback.apply(null, args);
} __sto(_cb, timeout); }
//测试代码
function shihuan(a) {
alert(a);
}
function yushibo(a, b, c) {
alert(a + b + c);
}
var a = new Object();
window.setTimeout(shihuan, 1000, a);
window.setTimeout(yushibo, 2000, a, 6, 7);运行无结果所示。搜索网上关于定时器的资料,请高手说说里面的逻辑window.setTimeout = function(){……}JavaScript
比如 window.setTimeout(yushibo, 2000, a, 6, 7);
callback.apply() 相当==> yushibo(a, 6, 7)
window.setTimeout = function(callback, timeout, param) {//重写原生函数
var args = Array.prototype.slice.call(arguments, 2);
//取得除callback和timeout之外的所有参数,也就是传给回调函数的参数 var _cb = function() {//用来调用回调函数,感觉这里有点多余?
callback.apply(null, args);//调用回调函数,传入参数
}
__sto(_cb, timeout);//调用原生setTimeout函数
}
function cube($n)
{
return($n * $n * $n);
}$a = array(1, 2, 3, 4, 5);
$b = array_map("cube", $a);
print_r($b);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<script type="text/javascript">
var __sto = setTimeout;
window.setTimeout = function(callback, timeout, param) {
var args = Array.prototype.slice.call(arguments, 2);
var _cb = function() {
return callback.apply(null, args);
}
__sto(_cb, timeout);
}
//测试代码
function shihuan(a) {
a.tip('f');
}
function yushibo(a, b, c) {
a.tip( b + c);
}
var a = {};
a.tip=function(f){
alert(f);
}
window.setTimeout(shihuan, 1000, a);
window.setTimeout(yushibo, 2000, a, 6, 7);
</script>
</head><body>
</body>
</html>