js中this指向的规律

 当前方法执行的主体是谁,this就是谁(谁执行的这个方法,this就是谁)
 this和当前函数在那创建的,在那执行的都没有关系

 1,全局作用域中的this是window
 2,函数执行,this取决于谁调用了它,this就是谁(点前面是谁this就是谁),没有点this是window
 在js的严格模式下("use strict"),没有点,是undefined
  var obj={
    fn:function(){
      console.log(this);
      }
  }
   var f= obj.fn;
   window.f();
   window.alert();
   obj.fn();

 3,构造函数执行,方法中this是当前类的实例
  function Fn(){
    this.n=12;
    }
    var f =new Fn();
 4,匿名函数和自执行函数的this都是window
        var fn= function (){
        console.log(this);
        }
        fn();
 5,给元素的某个事件绑定方法,方法中的this就是当前操作的元素本身
     document.onclick=function(){
        console.log(this);
    }

 如何改变this指向:
 1,call,apply,bind
  非严格模式下:第一个参数不写或者写null,this是window
  严格模式下:第一参数不写,this是window
 2, 使用箭头函数,箭头函数中没有this,this是上下文(在那定义的)的this
 3, 将this保存为变量
var obj= {
       n:10,
       fn:function(){
           var _this=this;
        setTimeout(function(){
            console.log(_this);
        }, 1000);
       }
     }
    var f= obj.fn();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值