日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 万象百科 >内容正文

万象百科

apply.call问题

發(fā)布時間:2023/11/17 万象百科 34 博士
生活随笔 收集整理的這篇文章主要介紹了 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)行的作用域。下面來看一個例子。

總結(jié)

以上是生活随笔為你收集整理的apply.call问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。