JS - this指向方法

本文详细解析了JavaScript中this关键字的指向规则,包括在不同上下文中this的指向变化,以及通过call(), apply()和bind()方法改变this指向的具体应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

this指向方法


this指向:

  • 谁调用就指向谁

  • 注:this只能指向对象

  • 例:

<div>点击事件</div>
 <script>
          console.log(this)//this指向window
        // 在JS事件中,那个对象触发的事件:就指向那个对象
        var div=document.getElementsByTagName("div")[0];
        div.onclick=function(){
        console.log(this)  // this指向div  
        }
 </script>

改变this指向的三种方法:

  1. call()和apply()和bind()
  • 需要注意的是bind 是返回新的函数,以便稍后调用;applycall 则是立即调用原函数
  1. call()&apply()方法:
  • 当函数通过Function对象的原型中继承的方法 call() 和 apply() 方法调用时, 其函数内部的this值可绑定到 call() & apply() 方法指定的第一个对象上, 如果第一个参数不是对象,JavaScript内部会尝试将其转换成对象然后指向它。

    例子:

      function foo(){
                console.log(this.fruit);
        }
        // 定义一个全局变量,等同于window.fruit = "banana";
        var fruit = "banana";
        var  o = {
              fruit : "apple"
        };
        foo.apply(window);  // "banana";
        foo.call(o);  // "apple";
    

    apply和call的唯一区别,就是在传参的时候,apply的参数需要放在一个数组里面,而call不需要;

  1. bind方法()
  • bind()方法创建一个新的函数(称为绑定函数), 当被调用时,将其this关键字设置为提供的值,在调用新函数时,在任何提供之前提供一个给定的参数序列。

    • 何时使用: 在创建方法时,就需要提前绑定this对象和参数值
      如何使用: 2步:
    1. 使用bind方法,基于现有函数创建新函数,并绑定this对象和部分参数值:
      var newFun=fun.bind(obj[,参数1,参数2,…])
    2. 调用newFun,传入剩余参数: newFun(剩余参数)
  • bind() 方法使用例子:

     function a(){
     return Array.prototype.slice.call(arguments);//将类数组转换成真正的数组
     }
     var b=a.bind(this,15,20)
     alert(b());//弹出 15,20
     var s=b(25,30);
     alert(s);//弹出 15,20,25,30
     ```
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值