之前對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吧