call、apply、bind三者为改变this指向的方法。
共同点:第一个参数都为改变this的指针。若第一参数为null/undefined,this默认指向window
call(无数个参数)
function fn(a, b, c) { console.log(this, a + b + c); // this指向window } fn(); fn.call(document, 1, 2, 3); //call改变之后this指向document //输出 #document 6 1,2,3是实参 结果相加为6
apply(两个参数)
function fn(a, b, c) { console.log(this, a + b + c); } fn(); fn.apply(document, [1, 2, 3]);
bind(无数个参数)
function fn(a, b, c) { console.log(this, a + b + c); //window } let ff = fn.bind("小明", 1, 2, 3); //手动调用一下
call、apply与bind区别:前两个可以自动执行,bind不会自动执行,需要手动调用
call、bind与apply区别:前两个都有无数个参数,apply只有两个参数,而且第二个参数为数组
原文:https://www.cnblogs.com/crazycode2/p/13468127.html