this指向的改变 call apply bind

世上哪有那么多伤心事,一定是你不读书,还爱胡思乱想  ------即将拥有八块腹肌的程序员

我们先在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. 直接从第二个参数开始依次传递,数组也可以

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容