jquery中有一個方法:one,用途是事件綁定只執行一次就自動解除綁定。源碼看了很久頭暈,決定自己搞一個。研究了很久,用原生的模擬了一次。我用的名字是once。
最初的方法是這樣的:
function once(dom, event, callback) { // 这一步是为了避免修改形参 var temp = callback; dom.addEventListener(event, function() { if(temp) temp(); temp = null; }) }
這種方法是可以的,但有個問題,事件處理函數依然存在,只是什麼都不執行而已,久而久之會變得十分臃腫。
替代方法變成在處理函數裡解除本身,但如果用匿名函數的話,會陷入可怕的無限遞歸。
用變數儲存的話就能解決了。
function once(dom, event, callback) { var handle = function() { callback(); dom.removeEventListener(event, handle); } dom.addEventListener(event, handle) }
閒暇娛樂之作,希望能幫到一些人。
以上是jquery one函數方法實現的詳細內容。更多資訊請關注PHP中文網其他相關文章!