this四大绑定规则

谈到this绑定规则要先找到函数执行过程中的调用位置。
调用位置就是函数在代码中被调用的位置。这就涉及分析调用栈(就是为了到达当前执行位置所调用的所有函数)。调用位置就在当前正在执行的函数的前一个调用中
那什么是调用栈和调用位置呢?

    //1.调用栈和调用位置
    function baz(){
   
        //当前调用栈是baz
        //当前调用位置是全局作用域
        console.log("baz");
        bar(); //<--bar的调用位置
    }

    function  bar(){
   
        //当前调用栈是baz->bar
        //当前调用位置是baz
        console.log("bar");
        foo();//<--foo的调用位置
    }

    function foo(){
   
        //当前调用栈是baz->bar->foo
        //当前调用位置是bar
        console.log("foo");
    }
    baz();//<-- baz的调用位置

调用栈是baz->bar->foo,当调用foo()时调用位置就是bar(),可以简单理解为在bar()中调用foo().
注意是如何(从调用栈中)分析出真正的调用位置的,因为它决定了this的绑定。

this有四大绑定规则,下面来仔细看看这四大规则。

  • 默认规则
function foo(){
   
    console.log(this.a); //this.a被解析成全局变量a a=2
}
var a=2;
foo(); //2

foo()是直接使用不带任何修饰的函数引用进行调用的,因此只能使用默认绑定,无法应用其他规则

//严格模式下全局对象将无法使用默认绑定,this会绑定到undefined. 严格模式下与foo()的调用位置无关
function foo(){
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值