- this是JavaScript语言的一个关键字
- 它是函数运行时,在函数体内部自动生成的一个对象,只能在函数体内部使用。
- 根据函数的不同使用场合,this有不同的值
- 总的来说,this就是函数运行时存在的环境对象。
this指向是由函数调用位置决定的(ES5 this的指向不是固定的)
- 函数在全局环境下调用 → this指向 window || global
//在 window 环境下,全局 this 指向 window
function foo(){
console.log(this)
}
foo();//window
//foo()等同于window.foo()
//在 node 环境下,this 指向 global。
- 函数作为对象中的一个方法进行调用 → this指向的是当前调用对象
var obj = {
username : '笨鸟'
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 = '笨鸟'//f1.name = '笨鸟'
this.age = 18
}
const f1 = new Foo();
有问题请评论