javascript中apply,call,bind區別,bind兼容等問題總結
阿新 • • 發佈:2017-06-27
scrip 總結 區別 call script 例子 獲取 log app
1 三者的相似之處:
(1).都是用來改變函數的this對象的指向的
(2).都是用第一個參數來做this對象的指向
(3).都可以傳參數進去
那麽,具體到它們有什麽區別呢?請看下面的例子:
兩個對象,一個動物類,一個人類,人類也是可以走的,那麽我們可以讓人類直接使用動物類的action方法嗎?答案當然是可以的。
方法就是通過改變動物類的action方法的指向,讓它的指向變為person,如下:
結果如下:
再看另外兩種用法:
這是call的方法,最後一個bind是有點特殊的:
這是因為bind獲取到的還是這個方法,只不過已經把this的指向指到person上了,如果要運行,還需調用一下
以上就是這三者的用法,還有一個重要的區別就是當這個方法需要傳參數的時候,請看下面的例子:
當我們需要有參數的時候,apply用法如下:
而call的用法如下:
也就是說apply需要把參數按照數組的方式傳進去,它會自動映射到方法的參數上,而call是直接按順序寫參數就可以了,最後看一下bind
bind可以直接傳參數(跟call一樣),但是因為它本身獲取到的就是一個function,因此還可以按照給function傳參數的方式來傳參:
到此,這三個方法的區別就基本說完了,希望可以對感興趣的人有幫助!
javascript中apply,call,bind區別,bind兼容等問題總結