世上哪有那么多伤心事,一定是你不读书,还爱胡思乱想 ------即将拥有八块腹肌的程序员
我们先在script中运行下面的几行代码看看打印的结果:

可以看出this.user的打印结果为undefined,因为a调用的this指向的是window,而this.user的this指向的是obj。
call方法
这里我们使用call方法来改变this的指向,如图:

这里可以看到this.user打印的结果是obj中user的值,x,y打印的为3,4,所以call方法不仅仅可以改变this的指向,同时也能传入对应的参数。
apply方法
apply方法跟call方法类似,区别是apply方法传入的参数是一个数组,这边我们直接看打印结果

传入的参数只跟第一个数组对应其他参数对x,y并不影响
bind方法
这里bind方法跟call,apply又有些不同,如图:

可以看到这里的this.user并没有打印。因为bind不会立即执行函数,它的返回值: 就是一个函数(只不过是一个被改变好了 this 指向的函数)所以我们可以通过下面的方式来调用修改好的函数

他对函数的参数传递有两个方式:1. 调用返回的函数的时候传递 2. 直接从第二个参数开始依次传递,数组也可以