在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ function中bind綁定問題

function中bind綁定問題

在開發(fā)中遇到this指向問題,除了使用箭頭函數(shù)外,我想著能不能用bind來解決。我在用fn的建議寫法時綁定就出錯誤,使用傳統(tǒng)寫法就ok。MDN上也查不出問題在哪
圖片描述

圖片描述

回答
編輯回答
半心人

個人猜測:

{
    funcName(args...) {
        // ...
    }
}

這種是語法層面的 聲明方法 操作,編譯器能接受的只是 funcName(...) {...} 這么個結(jié)構(gòu), } 之后就不允許出現(xiàn) . 這種行為了。

{
    funcName: funciton(args...) {
        //...
    }.bind(...) // 注意到 bind 返回的仍然是一個 function
}

這種是為 funcName 這個鍵賦值一個 Function 類型的匿名函數(shù)的值。

所以應(yīng)該是語法層面的問題。

如有錯誤還請海涵 : )

2018年5月17日 13:40
編輯回答
故林

var obj = {
func01: function() {},
func02() {}
};

這應(yīng)該是兩種寫法上的區(qū)別
func01是在執(zhí)行那一行的時候,function才定義的,當(dāng)執(zhí)行bind的時候function就已經(jīng)定義好了,所以使用bind不會出錯,
而func02是在定義obj的過程中定義的,當(dāng)執(zhí)行到func02的時候,這時候函數(shù)的聲明有可能還沒執(zhí)行完,所以這時候調(diào)用bind方法會報錯

2018年3月13日 21:38
編輯回答
陌如玉

第二種合法適因為滿足

{key:value}

的形式,value表示的范圍很大可以是很多合法語句,聲明、運算、賦值、iife...,function(){}.bind()就是合法語句;
第一種ES6的簡寫
可以理解成

{
    value,
    func(){}
}

被解析成

{
    value: value,
    func: function(){}
}

的形式,但是并不會把

    value + 1,
    func(){}.bind()

解析成

{
    value: value + 1,
    func: function(){}.bind()
}

的形式,換句話說,如果你那種形式合法

var a = {
    success(){},
    success(){}.bind({a:1}),
    success(){}.bind({a:2})
}
那你如何區(qū)分a.success
2017年11月16日 02:28