this的理解

169 阅读1分钟
  • this就是一个指针,指向调用对象函数的对象
  • 常见this指向
    1. 普通调用 a() :this指向window
    2. 构造调用 new a() :this指向当前构造函数创建的实例对象
    3. 隐式调用 obj.a() :this指向前面的实例对象(obj)
    4. 显式调用 a.call(obj) :this指向括号内第一个实参
    5. 箭头函数 ()=>{} :this指向外层作用域的this
    6. 事件回调函数 : this指向事件源
    7. 定时器的回调 :this指向window
    8. vue组件中的methods函数 :this指向vue组件实例
  • 如何改变this指向
    1. 箭头函数
    2. 函数内部使用变量接收this
    3. call,apply,bind
    4. new实例话一个对象
  • 面试题
var a = 1;
obj = {
    a : 2,
    fn
};
function fn(){
    var a = 3;
    console.log(this.a);
};
fn(); //普通调用,this指向window,输出a的值为1
obj.fn(); //隐式调用,this指向前面的对象(obj),输出a的值为2