代碼如下:
重點代碼解析:
? ??var args = [].slice.call(arguments,2);? 將偽數(shù)組轉(zhuǎn)換成數(shù)組并截取數(shù)據(jù)
????callback.apply(null, args);? 重新構造setTimeout中的方法
總體思路:
????定義一個函數(shù)(此例中為overrideSetTimeout函數(shù)),返回一個經(jīng)過重寫的setTimeout的回調(diào)函數(shù)。
????具體的重寫過程為:
? ????? ① 將傳入的arguments對象轉(zhuǎn)換為數(shù)組對象,并截取所需的參數(shù)
? ????? ② 通過apply()方法將截取到的參數(shù)傳遞到setTimeout中的回調(diào)函數(shù)中
? ????? ③ 調(diào)用之前的setTimeout方法
接下來,在調(diào)用setTimeout函數(shù)是即可傳入多個參數(shù),傳遞多個參數(shù)的需求也就實現(xiàn)了