代码如下:
重点代码解析:
var args = [].slice.call(arguments,2); 将伪数组转换成数组并截取数据
callback.apply(null, args); 重新构造setTimeout中的方法
总体思路:
定义一个函数(此例中为overrideSetTimeout函数),返回一个经过重写的setTimeout的回调函数。
具体的重写过程为:
① 将传入的arguments对象转换为数组对象,并截取所需的参数
② 通过apply()方法将截取到的参数传递到setTimeout中的回调函数中
③ 调用之前的setTimeout方法
接下来,在调用setTimeout函数是即可传入多个参数,传递多个参数的需求也就实现了