在Chrome的控制檯,爲什麼在這種情況下使用'apply'函數?
> $$
bound: function()
{
return document.querySelectorAll.apply(document, arguments)
}
這是爲什麼這樣的代碼? 與
有什麼區別return document.querySelectorAll(arguments)
?
在Chrome的控制檯,爲什麼在這種情況下使用'apply'函數?
> $$
bound: function()
{
return document.querySelectorAll.apply(document, arguments)
}
這是爲什麼這樣的代碼? 與
有什麼區別return document.querySelectorAll(arguments)
?
arguments
是一個類似數組的對象。
調用document.querySelectorAll(arguments)
會將整個數組作爲單個參數傳遞。
調用querySelectorAll.apply(document, arguments)
將傳遞數組中的每個項目作爲單獨的參數。
在這種特殊情況下,它不是很有用,因爲querySelectorAll
只能帶一個參數。
使用.apply()
確保供給到bound()
參數是被供應到querySelectorAll()
之前解開。
沒有這一點,調用的效果:
bound('foo');
將調用
document.querySelectorAll(['foo']);