call、apply、bind的用法

call

function showColor(){
    console.log("my color is:" + this.color);
}
window.color = "red";

showColor.call(window);    //my color is:red

定义l:调用一个对象的一个方法,以另一个对象替换当前对象

apply

function test(arg1,arg2){
    ......
}
test.call(this,arg1,arg2);
test.apply(this,[arg1,arg2]);

定义:应用某一对象的一个方法,用另一个对象替换当前对象
bind
也可以改变函数体内this的指向
定义:bind()方法会创建一个新函数,称为绑定函数,当调用这个绑定函数时,绑定函数会以创建它时传入 bind()方法的第一个参数作为 this,传入 bind() 方法的第二个以及以后的参数加上绑定函数运行时本身的参数按照顺序作为原函数的参数来调用原函数。

function showColor(){
    console.log("my color is:" + this.color);
}
window.color = "red";
showColor.bind(window)();  

区别
bind方法是创建一个函数,然后可以在需要调用的时候再执行该函数,并非是立即执行函数;而call,apply是在改变了上下文中的this指向后并立即执行函数。

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

相关阅读更多精彩内容

友情链接更多精彩内容