一篇读懂this绑定规则,确定this指向

92 阅读1分钟

this在全局中指向window,在node.js中指向{} 在函数中this指向与编译位置无关,与调用方式和调用位置有关。

绑定规则
  1. 默认绑定
function fn (){
    console.log(this) //this -> window
   }
fn()
// fn()独立调用函数,this指向window
  1. 隐式绑定
var obj =  {
test:1,
fn:function(){
     console.log(this) //this -> obj
     }
 }
 obj.fn()
 //  obj.fn() //指向 obj
  1. 显示绑定
apply(),call(),bind()
apply,call,bind当传入null,undefind时,this指向window


  1. new()绑定

new绑定之后会创建一个全新的对象,这个新对象会绑定到函数调用的this上,最后会默认将创建的对象返回。
 

this四个绑定函数的优先级

  • 1.默认绑定规则优先级最低
  • 2.call/apply、bind的显示绑定高于隐式绑定优先级
  • 3.new()绑定高于显示绑定的优先级

this规则之外 ** 间接函数引用(赋值表达式 函数独立调用))()

箭头函数

箭头函数不绑定thisarguments,不能作为构造函数使用(不能和new一起来使用,会抛出错误)