游戲開發-cocos creator踩坑-bind(this)導致的事件監聽off不掉


之前對js理解不夠深入,用bind(this)做事件監聽用的很爽,但是有一天發現下面這種類型的監聽off關閉不掉

使用 off 關閉 事件時 失效
使用這樣的方式 取消注冊不會成功 
this.node.on("testEvent",this.refresh.bind(this)); 注冊
this.node.off("testEvent",this.refresh.bind(this)); 取消注冊

使用這樣的方式才能成功
this.node.on("testEvent",this.refresh,this); 注冊
this.node.off("testEvent",this.refresh.this); 取消注冊

查詢論壇發現是因為bind(this)產生了拷貝

this.node.on("testEvent",this.refresh.bind(this)); 
這里的回調函數
this.node.off("testEvent",this.refresh.bind(this)); 
和這里的回調函數

和真正的this.refresh,其實已經是3個函數了,所以如果需要off的,還是老實的用第三個傳參this吧

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM