let crop = { list: {}, on(key, fn) { if(!this.list[key]) { this.list[key] = []; } this.list[key].push(fn); }, emit(key, ...payload) { let fns = this.list[key]; if(!fns || fns.length === 0) return; fns.forEach(fn => { fn.apply(this, payload); }) }, remove(key, fn) { let fns = this.list[key]; console.log(key); fns = []; } }
写发布订阅的时候遇到了个问题。
我在调用crop.remove()的时候清空了fns 但是打印fns还是有数据的。fns.length = 0;这样是可以清除的。fns不是也指向了this.list[key]吗?
下方有打印结果
不负相思意
人到中年有点甜
慕田峪4524236