js 改变this指向

js 改变this指向

  • js 改变this 指向
  • js中改变this指向的三个方法
  • 1.call(this指向,实参1,实参2)
    实参可以有无数个,中间用逗号隔开
  • 2.apply(this指向,[实参1,实参2])
    参数有两个,一个为this指向,一个为类数组
  • 3.bind(this指向,实参)(实参)
    bind()的实参可以随意放置

区别:
call()和apply()在改变完this的指向后会自动调用函数
bind()在改变完this的指向后不会自动调用函数,需要手动调用 bind()的第二个()可以调用函数

<script>
    //修改this指向 
    //修改this指向有3个方法  call()、apply()、bind()
    //1.call()  call(this指向,实参1,实参2) call() 实参可以有无数个,中间用逗号隔开,实参可以没有
    //2.apply()  apply(this指向,[实参1,实参2]) apply() 只有两个参数,一个是要修改的this指向,一个是类数组
    //3.bind()  bind(this指向,实参)(实参)  实参可以随意放置

    //call()和apply()在改变完this指向后会立即自动调用一次函数
    //bind() 在改变完this指向后不会自动调用函数,而是需要手动调用

    //call()
    function foo(){
        console.log(this)//document
    }
    foo.call(document);

    //apply()
    function foo1(a1,a2){
        console.log(this);//document
        console.log(a1);//1
        console.log(a2);//2
    }
    foo1.apply(document,[1,2])

    //bind()
    //bind()的第二个括号可以调用函数
    function foo2(a1,a2){
      console.log(this);//document
      console.log(a1);//1
      console.log(a2);//2
    }
    foo2.bind(document,1,2)();

    //例子: 修改计时器中的this指向
    //这个例子,只能用bind()实现,其他两个方法是实现不了的,因为只有bind是手动调用的。其他两个方法自动调用,就做不了延迟的效果
    setInterval(function(){
      console.log(this)
    }.bind(document),3000)
    </script>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值