2018-4-22 seo達人
如果您想訂閱本博客內容,每天自動發(fā)到您的郵箱中, 請點這里
在 JavaScript 中
如果我們有一個對象
二者的作用完全一樣,知識接受 參數(shù) 的方式不太一樣。
在 Javascript 中,多次
三種方法的作用
call
、apply
和 bind
是 Function 對象自帶的三個方法,都是為了改變函數(shù)體內部 this
的指向。
call
、apply
和 bind
三者第一個參數(shù)都是 this
要指向的對象,也就是想指定的上下文。
call
、apply
和 bind
三者都可以利用后續(xù)參數(shù)傳參。
bind
是返回對應 函數(shù),便于稍后調用;apply
、call
則是立即調用 。
舉個栗子
banana= {color : 'yellow'}
,我們不想重新定義 say 方法,那么我們可以通過 call
或 apply
用 apple 的 say 方法:
call
和 apply
的區(qū)別
call
是把參數(shù)按順序傳遞進去,而 apply
則是把參數(shù)放在 數(shù)組 里面。
類(偽)數(shù)組使用數(shù)組方法
驗證一個對象的類型可以用
bind()
方法
bind()
方法會創(chuàng)建一個 新函數(shù),稱為綁定函數(shù),當調用這個綁定函數(shù)時,綁定函數(shù)會以創(chuàng)建它時傳入 bind()
方法的第一個參數(shù) 作為 this,傳入 bind()
方法的 第二個以及以后的參數(shù)加上綁定函數(shù)運行時本身的參數(shù)按照順序作為原函數(shù)的參數(shù)來調用原函數(shù)。
注意
:bind()
方法創(chuàng)建的函數(shù)不會立即調用,在下面的例子中,最后 func()
才調用了函數(shù),這是它與 call
和apply
的區(qū)別。
bind()
是無效的。更深層次的原因, bind()
的實現(xiàn),相當于使用函數(shù)在內部包了一個 call / apply
,第二次 bind()
相當于再包住第一次 bind()
,故第二次以后的 bind
是無法生效的。