bind

bind

var obj = {
    a: 1,
    foo: function f() {
        console.log(this.a);        
    }
}

obj.foo(); //1

var g = obj.foo;
g();    //undefined

g = obj.foo.bind(obj);
g();    //1

g.applay(obj) // 1
g.call(obj) //1
函數(shù)foo在非嚴(yán)格模式下如果沒(méi)有明確綁定對(duì)象,則會(huì)綁定到全局對(duì)象,所以輸出undefined
。在嚴(yán)格模式下則會(huì)報(bào)錯(cuò)。

為什么obj.foo()
 可以正確輸出呢?原因在于這種調(diào)用方式會(huì)[隱式綁定](https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/ch2.md)到執(zhí)行這個(gè)方法的對(duì)象上(obj)。

call 和applay

function xxx(a,b,c){
  console.log(a);
  console.log(b);
  console.log(c);
  console.log(this)
}
xxx.applay(obj,[1,2,3])
xxx.call(obj,1,2,3,)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容