理解执行上下文之this对象

238 阅读1分钟

this是什么?

this是执行上下文中一个属性。

this绑定的规则

默认规则

this默认在严格模式下绑定到undefined,非严格模式下绑定到全局对象

    function foo(){
        console.log('foo - this',this)
    }
    
    foo() //打印window对象

隐式绑定

调用位置是否存在函数上下文的引用

    function foo(){
        console.log('foo - this',this)
    }
    var obj = {}
    
    obj.foo = foo
    
    obj.foo()//打印结果 {foo: ƒ} 

从结果可以看出 此时this指向obj

显示绑定

是否存在call,apply,bind的调用

硬绑定

是否存在new关键词的调用

规则

  • 有new 关键字 this指向 new 的实例
  • call,apply,bind 指向指定的对象
  • 有上下文指向上下文
  • 默认绑定window(非严格模式下)