2019-05-14 bind
2019-05-14 本文已影响0人
tsl1127
![](https://img.haomeiwen.com/i5037851/62cdb3722a403526.png)
![](https://img.haomeiwen.com/i5037851/c90bf492afcbb2f0.png)
这里的this就是那个元素div,是函数call的时候传的第一个参数——我们的需求是,当div被点击的时候,调用view里的onClick方法,但是这里是错的,是调不了的
同样的如果this.element.onClick = this.onClick是调用不了的,this是指那个div不是指view
那this.element里的this呢?是那个view
如何解决?方法一如下
![](https://img.haomeiwen.com/i5037851/fc5c3e46af2c0967.png)
方法二:用bind方法
![](https://img.haomeiwen.com/i5037851/698baddaba67bf1d.png)
这个bind返回一个新函数,这个新函数会把前面的this.onClick包起来
等价于
![](https://img.haomeiwen.com/i5037851/561acedf01ded595.png)
![](https://img.haomeiwen.com/i5037851/e7fde8843d0b869f.png)
![](https://img.haomeiwen.com/i5037851/6495485a6962f2f8.png)
call 和 apply 是直接调用函数,而 bind 则是返回一个新函数(并没有调用原来的函数),这个新函数会 call (或apply)原来的函数,call(或apply) 的参数由你指定。