this在全局中指向window,在node.js中指向{} 在函数中this指向与编译位置无关,与调用方式和调用位置有关。
绑定规则
- 默认绑定
function fn (){
console.log(this) //this -> window
}
fn()
// fn()独立调用函数,this指向window
- 隐式绑定
var obj = {
test:1,
fn:function(){
console.log(this) //this -> obj
}
}
obj.fn()
// obj.fn() //指向 obj
- 显示绑定
apply(),call(),bind()
apply,call,bind当传入null,undefind时,this指向window
- new()绑定
new绑定之后会创建一个全新的对象,这个新对象会绑定到函数调用的this上,最后会默认将创建的对象返回。
this四个绑定函数的优先级
- 1.默认绑定规则优先级最低
- 2.call/apply、bind的显示绑定高于隐式绑定优先级
- 3.new()绑定高于显示绑定的优先级
this规则之外 ** 间接函数引用(赋值表达式 函数独立调用))()
箭头函数
箭头函数不绑定this、arguments,不能作为构造函数使用(不能和new一起来使用,会抛出错误)