1、
默认绑定:没有明确隶属对象的函数,被直接执行,一般都是window(默认绑定this);
2、
隐式绑定:有所属对象的函数,被执行,一般是当前函数的所属对象(隐式绑定this);
隐式丢失:如果作为参数,传到另一个函数中,那么丢失原本的对象,变成window。
3、
强制绑定:利用函数的方法(call、apply、bind),改成谁,this就是谁;
4、
new绑定:函数被new执行后,函数内部的this会指向new出来的实例。
注意:this永远跟着当前函数走,this永远是一个对象,永远在执行时才能确定指向
扩展:
ES6中的箭头函数没有自己的this,指向外层this,函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。