apply.call问题
生活随笔
收集整理的這篇文章主要介紹了
apply.call问题
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
聰明的程序員發(fā)現(xiàn), apply還有一個妙用, 就是將一個不是接收數(shù)組參數(shù)的方法, 通過apply來傳遞數(shù)組參數(shù)進(jìn)去.比如:
在上面這個例子中,callSum1() 在執(zhí)行 sum() 函數(shù)時傳入了 this(因?yàn)槭窃谌肿饔糜蛑姓{(diào)用的,所以傳入的就是 window 對象)和 arguments 對象。而 callSum2 同樣也調(diào)用了 sum() 函數(shù),但它傳入的則是 this 和一個參數(shù)數(shù)組。這兩個函數(shù)都會正常執(zhí)行并返回正確的結(jié)果。
如需了解更多內(nèi)容,請參考:https://github.com/stone0090/...
apply和call的主要區(qū)別, apply的后一個參數(shù)是以數(shù)組的形式, 而call是列舉的方式(很多個參數(shù)).至于第一個參數(shù), 其實(shí)都差不多.這個差別就為我們何時使用call, 何時使用apply做出了明顯的分界. 即參數(shù)為數(shù)組時使用apply, 非數(shù)組用call.
使用 call() 或 apply() 來擴(kuò)充作用域的最大好處,就是對象不需要與方法有任何耦合關(guān)系。在前面例子的第一個版本中,我們是先將 sayColor() 函數(shù)放到了對象 o 中,然后再通過 o 來調(diào)用它的;而在這里重寫的例子中,就不需要先前那個多余的步驟了
在使用 call() 方法的情況下,callSum() 必須明確地傳入每一個參數(shù)。結(jié)果與使用 apply() 沒有什么不同。至于是使用 apply() 還是 call(),完全取決于你采取哪種給函數(shù)傳遞參數(shù)的方式最方便。如果你打算直接傳入 arguments 對象,或者包含函數(shù)中先接收到的也是一個數(shù)組,那么使用 apply() 肯定更方便;否則,選擇 call() 可能更合適。(在不給函數(shù)傳遞參數(shù)的情況下,使用哪個方法都無所謂。)事實(shí)上,傳遞參數(shù)并非 apply() 和 call() 真正的用武之地;它們真正強(qiáng)大的地方是能夠擴(kuò)充函數(shù)賴以運(yùn)行的作用域。下面來看一個例子。
在上面這個例子中,callSum1() 在執(zhí)行 sum() 函數(shù)時傳入了 this(因?yàn)槭窃谌肿饔糜蛑姓{(diào)用的,所以傳入的就是 window 對象)和 arguments 對象。而 callSum2 同樣也調(diào)用了 sum() 函數(shù),但它傳入的則是 this 和一個參數(shù)數(shù)組。這兩個函數(shù)都會正常執(zhí)行并返回正確的結(jié)果。
如需了解更多內(nèi)容,請參考:https://github.com/stone0090/...
apply和call的主要區(qū)別, apply的后一個參數(shù)是以數(shù)組的形式, 而call是列舉的方式(很多個參數(shù)).至于第一個參數(shù), 其實(shí)都差不多.這個差別就為我們何時使用call, 何時使用apply做出了明顯的分界. 即參數(shù)為數(shù)組時使用apply, 非數(shù)組用call.
使用 call() 或 apply() 來擴(kuò)充作用域的最大好處,就是對象不需要與方法有任何耦合關(guān)系。在前面例子的第一個版本中,我們是先將 sayColor() 函數(shù)放到了對象 o 中,然后再通過 o 來調(diào)用它的;而在這里重寫的例子中,就不需要先前那個多余的步驟了
在使用 call() 方法的情況下,callSum() 必須明確地傳入每一個參數(shù)。結(jié)果與使用 apply() 沒有什么不同。至于是使用 apply() 還是 call(),完全取決于你采取哪種給函數(shù)傳遞參數(shù)的方式最方便。如果你打算直接傳入 arguments 對象,或者包含函數(shù)中先接收到的也是一個數(shù)組,那么使用 apply() 肯定更方便;否則,選擇 call() 可能更合適。(在不給函數(shù)傳遞參數(shù)的情況下,使用哪個方法都無所謂。)事實(shí)上,傳遞參數(shù)并非 apply() 和 call() 真正的用武之地;它們真正強(qiáng)大的地方是能夠擴(kuò)充函數(shù)賴以運(yùn)行的作用域。下面來看一個例子。
總結(jié)
以上是生活随笔為你收集整理的apply.call问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀畅玩7x参数配置,荣耀畅玩7x机身配
- 下一篇: 女性多囊卵巢的原因