JS this以及绑定丢失

this

先说说函数的调用方法
1.独立调用:即一个函数声明后调用
2.方法调用:函数当作对象的方法进行调用
3.间接调用:call() apply() bind()
4.new 构造方法调用:实例化对象

函数的四种调用方法对应四种this的绑定
1.默认绑定:默认为window,即独立调用函数时this指向window
有时候会出现一个函数中嵌套一个函数(独立调用)
2.隐式绑定:当函数当作对象的方法调用,this指向当前的对象
3.显示绑定:利用call apply bind方法来改变this的指向,或者是在一个函数中直接将this绑定
4.new绑定:this指向构造方法创建出来的实例化对象

绑定丢失,就是this的指向出现了改变,一般指的是this指向该对象却指向了window
关于绑定丢失的情况有四种:
1.函数名是别名
2.函数作为参数
3.跟第二种类似,出现在内置函数中
4.函数的赋值
以下讨论这四种情况:

    /*1.*/
    function b(){
	console.log(this)
}
	var p={
		b:b;
		}
		p.b();  //p
    	var c = p.b;
      	c();  //调用的话是window

      /*2.参数传递*/

    	function d(b) {
          b();
      }
      d(p.b);  //window调用

      /*3.内置的执行函数 setInterval setTimeout*/
    	setInterval(function () {
          console.log(this);
      }, 1000)

    /*间接调用*/
    var e = { a: 2 };
     /* e.b = p.b;
      e.b();

    (e.b = p.b)();//立即执行函数,调用的是window

点击查看

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值