改变this指向的三种方式

132 阅读1分钟

image.png

第一种:call方式

     let obj={
        name:'小王',
        age:18
    }
    function btn(x,y) {
        console.log('call==='+this.name,this.age,x,y)
    }
    btn.call(obj,1,2)

第二种:apply方式

    function btn2(x,y) {
        console.log('apply==='+this.name,this.age,x,y)
    }
    btn2.apply(obj,[3,4])

第三种:bind方式

    function btn3(x,y) {
        console.log('bind==='+this.name,this.age,x,y)
    }
    let retobj=btn3.bind(obj,5,6)()
    

注意: call、apply与bind区别:前两个可以自动执行,bind不会自动执行,需要手动调用

call、bind与apply区别:前两个都有无数个参数,apply只有两个参数,而且第二个参数为数组