js中的call,bind,apply方法有什么作用?区别是什么?

90 阅读1分钟

其实这三个方法都是改变this指向的。(箭头函数不适用,箭头函数中,this的指向都是根据上下文来决定的,一般就是window对象)

举个例子:

var box = this.document.querySelector('.box'); //class为box的dom节点
var num1 = 1;
var num2 = 2;
var obj = {
    fn: function(num1,num2){
        console.log(this)
}
}

如果我想把this指向box。可以这样
obj.call(box,num1,num2)//第一个参数是你要绑定的对象,其他的参数是你方法的入参
obj.apply(box,[num1,num2])//基本和call没区别,就是入参都放到数组中了
obj.bind(box)()//返回的是你绑定后的那个函数,所以后面有()