當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JS call()和apply()方法和区别
生活随笔
收集整理的這篇文章主要介紹了
JS call()和apply()方法和区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、方法定義:
- apply:調用一個對象的一個方法,用另一個對象替換當前對象。例如:B.apply(A, arguments);即A對象應用B對象的方法。
- call:調用一個對象的一個方法,用另一個對象替換當前對象。例如:B.call(A, args1,args2);即A對象調用B對象的方法。
call 與 apply 的相同點:
- 方法的含義是一樣的,即方法功能是一樣的;
- 第一個參數的作用是一樣的;
call 與 apply 的不同點:兩者傳入的列表形式不一樣
- call可以傳入多個參數;
- apply只能傳入兩個參數,所以其第二個參數往往是作為數組形式傳入
二、舉栗:
1. call()、 apply()、 bind() 都是用來重定義this這個對象的!
例:
?
2.對比call、 bind、 apply 傳參情況下
答案:
三者之間差距很小!
從上面的結果來看:
call、 bind、 apply 這三個函數的第一個參數都是this的指向對象,第二個參數差別就來了:
call 的參數是直接放進去的,第二第三第n個參數全都用逗號分隔,直接放到后面obj.myFun.call(db,'江西', ..., 'string')。
apply的所有參數都必須放在一個數組里面傳進去。
bind除了返回函數以外,它的參數和call 一樣。
當然,三者的參數不限定是String 類型,允許是各種類型,包括函數,對象等等。
總結
以上是生活随笔為你收集整理的JS call()和apply()方法和区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 顽石系列:Java技术面试
- 下一篇: StringUtils类中 isEmpt