this指向问题

普通函数:

1.this指向直接调用该函数的对象,例如:obj.fn obj调用fn函数,该this为obj对象。

2.如果没有直接调用对象,该this在严格模式下指向为undefind,默认模式下该this指向为window对象。

3.使用call,apply,bind绑定的this,this指向绑定的对象。

 var obj = {
     num:1,
    func: function() {
       console.log(this.num)
   },
   say: function () {
     var that = this;   //此时的this就是obj对象
     setTimeout(function () {
       console.log(this)  // 该this为window对象   如果使用箭头函数this就指向obj
       that.func()
     });
   }
 }
 obj.say();

箭头函数:

箭头函数没有自己的this, 它的this是继承而来; 默认指向在定义它时所处的对象(宿主对象),而不是执行时的对象, 定义它的时候,可能环境是window; 箭头函数可以方便地让我们在 setTimeout ,setInterval中方便的使用this

原文地址:https://www.cnblogs.com/dujunfeng/p/8825093.html