先贴结论:call, apply, bind把this的指向改变为call, apply, bind所传入的第一个参数
相同点:
1.都是用来改变函数的this对象的指向。
2.第一个参数都是this要指向的对象。
3.都可以利用后续参数传参。
不同点:
call()方法可以传递两个参数。第一个参数是指定函数内部中this的指向(也就是函数执行时所在的作用域),第二个参数是函数调用时需要传递的参数。
call方法中的第一个参数是必须的,可以是null,undefined,this,但是不能为空.
apply方法的作用与call方法类似,也是改变this指向(函数执行时所在的作用域),然后在指定的作用域中,调用该函数。同时也会立即执行该函数。唯一的区别就是,它接收一个数组作为函数执行时的参数。
apply方法的第一个参数也是this所要指向的那个对象,如果设为null或undefined或者this,则等同于指定全局对象。第二个参数则是一个数组,该数组的所有成员依次作为参数,在调用时传入原函数。原函数的参数,在call方法中必须一个个添加,但是在apply方法中,必须以数组形式添加。
call,apply方法是在调用之后立即执行函数,而bind方法没有立即执行,需要将函数再执行一遍。有点闭包的味道。
改变this指向的call,apply,bind使用方法及区别
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- call/apply/bind方法的来源call,apply和bind方法都是继承自Function.protot...
- 本文首发我的个人博客:前端小密圈,评论交流送1024邀请码,嘿嘿嘿😄。 来自朋友去某信用卡管家的做的一道面试题,用...
- 参考《JavaScript设计模式与开发实践》 this 跟别的语言大相径庭的是,JavaScript的this总...
- 绑定 this 的方法 参考文章:绑定 this 的方法 this的动态切换,固然为 JavaScript 创造了...
- apply、call、bind apply call借用他人的函数方法 网上文章虽多,大多复制粘贴,且晦涩难懂,我...