我在看JS高階程式時候,第22章提及了bind
#箭頭指出的地方為什麼要return? 我並不是很能理解,所以當我刪除了箭頭指出的return的時候,事件也能執行啊.
是可以執行,但不能只針對這種情形,要是我要bind的fn是一個需要回傳值的函數呢?
function bind(fn, context){ return function(){ return fn.apply(context, arguments); } } function bindNoReturn(fn, context){ return function(){ fn.apply(context, arguments); } } var name = 'global'; function fn(){ return this.name; } var bfn = bind(fn, {name:"sf"}); var bfnNR = bindNoReturn(fn,{name:'return'}); console.log(bfn()); console.log(bfnNR());
這個就是設計模式的思想,return this.忘記叫什麼模式.還有一個就是跟樓上的需求一樣了
this.do1().do2()
bind 目的只是綁定函數上下文也就是函數內部的this指向,不能改變函數原來的行為。
這個範例中 handleClick 沒有回傳值,所以有木有return一樣,但是如果某個事件需要關心事件處理函數的回傳值呢?
例如 回傳 false 會 preventDefault() 等。
那開發的時候 handleClick 裡寫了個return false,結果卻不起作用,這就是傳說中的坑。
你的範例中,bind 函數全部是副作用…對全是副作用(改 dom 啊,alert 啊,發請求啊之類)的函數,你 return 什麼都沒有意義。 最簡單的例子,需要 bind 後回傳值時:
newFn = oldFn.bind(this) // ... var x = newFn() // undefined
這時內層的 return 就是必須的。
是可以執行,但不能只針對這種情形,要是我要bind的fn是一個需要回傳值的函數呢?
這個就是設計模式的思想,return this.忘記叫什麼模式.
還有一個就是跟樓上的需求一樣了
this.do1().do2()
bind 目的只是綁定函數上下文也就是函數內部的this指向,不能改變函數原來的行為。
這個範例中 handleClick 沒有回傳值,所以有木有return一樣,但是如果某個事件需要關心事件處理函數的回傳值呢?
例如 回傳 false 會 preventDefault() 等。
那開發的時候 handleClick 裡寫了個return false,結果卻不起作用,這就是傳說中的坑。
你的範例中,bind 函數全部是副作用…對全是副作用(改 dom 啊,alert 啊,發請求啊之類)的函數,你 return 什麼都沒有意義。
最簡單的例子,需要 bind 後回傳值時:
這時內層的 return 就是必須的。