亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JavaScript中函數綁定實現的問題

JavaScript中函數綁定實現的問題

FFIVE 2018-09-15 10:49:10
我看到的實現函數綁定環境的方法是:function bind(fn,context){    return function(){        return fn.apply(context,arguments);     } }我對這個閉包很疑惑,如果不搞閉包,直接:function bind(fn,context){    return fn.apply(context); }不也是能實現綁定嗎,設置我連bind函數也不要,在需要綁定的時候直接寫:fn.apply(context);所以這個閉包的作用是什么,除了方便傳參,還有什么特殊的作用嗎?先謝過大家了。
查看完整描述

1 回答

?
MMTTMM

TA貢獻1869條經驗 獲得超4個贊

首先,你要分清楚函數的定義和執行

function bind(fn,context){    return function(){        return fn.apply(context,arguments);
    }
}

這種情況下 var x = bind(func, obj); 得到的 x 是一個函數,它是可以無限次執行 x() 的。

然后,

function bind(fn, context){    return fn.apply(context);
}

這個 bind 會直接執行 fn,返回的是執行的結果,而不是一個函數。

所以呢,它們的區別就在于,一個是定義了一個函數返回,一個是直接執行的函數。

不過 bind 在 JavaScript 中已經內置為 function 對象的方法了,所以你可以直接用

var f = fn.bind(context);// 其中 fn 是一個函數,得到的 f 是另一個函數


查看完整回答
反對 回復 2018-10-29
  • 1 回答
  • 0 關注
  • 486 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號