1. 程式人生 > >javascript中call()、apply()、bind()的用法理解

javascript中call()、apply()、bind()的用法理解

一、bind的用法

第一個:obj.showInfo('arg','arg_18');中傳的2個引數通過showInfo方法改變的是obj下中的name和age

第二個:obj.showInfo.bind(this)('bind','bind_18');中bind要傳的name和age是通過一個一個傳的形式,然後通過showInfo方法改變的是window下的name和age

注:bind 返回的是一個新的函式,你必須呼叫它才會被執行

 

二、apply的用法

第一個:obj.showInfo('arg','arg_18');中傳的2個引數通過showInfo方法改變的是obj下中的name和age

第二個:obj.showInfo.apply(this,['apply','apply_18']);中apply要傳的name和age是通過陣列的形式,然後通過showInfo方法改變的是window下的name和age

二、call的用法

第一個:obj.showInfo('arg','arg_18');中傳的2個引數通過showInfo方法改變的是obj下中的name和age

第二個:obj.showInfo.call(this,'call','call_18');中call要傳的name和age是通過一個一個傳的形式,然後通過showInfo方法改變的是window下的name和age

總結:     1、call 、bind 、 apply 這三個函式的第一個引數都是 this 的指向物件     2、call的引數是直接放進去的,第二第三第n個引數全都用逗號分隔     3、apply的所有引數都必須放在一個數組裡面傳進去     4、bind除了返回是函式以外,它的引數傳遞方式和call 一樣。         當然,三者的引數不限定是string型別,允許是各種型別,包括函式 、 object 等等!