首先今天遇到一些坑, 再总结一下这几个方法
call()
- 可以改变函数的this指向
- 并且同时调用函数
- 可以传参数call(obj, 参数1, 参数2)
- 返回值是原来函数的返回值
apply()
- 可以改变函数的this指向
- 并且同时调用函数
- 参数必须是数组或者是伪数组(因为伪数组也是数组)
- 返回值是原函数的返回值
bind()
- 不会调用函数
- 可以传参数bind(obj, 参数1, 参数2)
3. 返回值指定的(this和初始化)参数改造的原函数拷贝(今天就载这了)
坑 !! 实现popover组件时, 我需要点击按钮显示, 点击其他地方消失的需求
- 因为防止点击时已经监听事件
- 加了延时, 点击1秒后创建事件
- 再点击document的click时删除事件
- 但是我为了可以删除事件就把这里的箭头函数改为命名函数用bind()改变this执行等价于箭头函数
- 然后缺没有删除以前的事件
发现其实是bind没掌握好 他会返回新函数, 我们删除x并不是bind返回的新函数
解决办法,还是用箭头函数, 给箭头函数加名字