javaScript中的this指向

372 阅读1分钟
  1. this是JavaScript语言的一个关键字
  2. 它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。
  3. 根据函数的不同使用场合,this有不同的值
  4. 总的来说,this就是函数运行时存在的环境对象。

- 函数在全局环境下调用 → this指向 window || global

//在 window 环境下,全局 this 指向 window
function foo(){
    console.log(this)
}
foo();//window
//foo()等同于window.foo()

//在 node 环境下,this 指向 global。
复制代码

- 函数作为对象中的一个方法进行调用 → this指向的是当前调用对象

var obj = {
    username : 'aa'
    foo: function(){
        console.log(this)
    }
}
obj.foo();
//obj.foo()等同于window.obj.foo()
复制代码

- 函数作为事件绑定中的回调函数来使用时 → this指向触发事件的元素

var div = document.getElementById('div');
div.addEventListener('click',function(){
    console.log(this)//div
})

var ul = document.querySelector('ul');
ul.addEventListener('click',function(e){
    console.log(this)//ul
})
复制代码

- 函数作为一个构造函数,进行实例化操作时 → this指向当前实例化对象

function foo(){
    this.name = 'aa'//f1.name = 'aa'
    this.age = 18
}
const f1 = new Foo();