小白快速入门:JavaScript中的this

JavaScript this 关键词指的是它所属的对象。

它拥有不同的值,具体取决于它的使用位置:

在方法中,this 指的是所有者对象。

  • 单独的情况下,this 指的是全局对象。
  • 在函数中,this 指的是全局对象。
  • 在函数中,严格模式下,this 是 undefined。
  • 在事件中,this 指的是接收事件的元素。
  • 像 call() 和 apply() 这样的方法可以将 this 引用到任何对象。

箭头函数的this

var handler = {
  id: '123456',

  init: function() {
    document.addEventListener('click',
      event => this.doSomething(event.type), false);
  },

  doSomething: function(type) {
    console.log('Handling ' + type  + ' for ' + this.id);
  }
};

上面代码的init方法中,使用了箭头函数,这导致这个箭头函数里面的this,总是指向handler对象。否则,回调函数运行时,this.doSomething这一行会报错,因为此时this指向document对象。

查找步骤:

  1. 箭头函数往上找{}包起来的区块
  2. 判断{}包起来的区块是function还是Object
  3. 如果是function箭头函数的this继承function的this(即再使用传统this指向查找)
  4. 如果是Object,继续往上找{}包起来的是function的区块。如果找不到,箭头函数的this就是全局windows。
var x = 10
function test() {
    var x = 11;
    var methods= {
        x: 33,
        say: function () { console.log(this.x) },
        say2: () => { console.log(this.x) }
    }
    methods.say()   //33
    methods.say2()  //10
}

test()
posted @ 2019-09-11 00:03  一只小鲸鱼  阅读(181)  评论(0)    收藏  举报