this指向问题

JS中,this究竟指向什么

永远指向对象

JS中,this在哪些位置出现

  • 全局
在浏览器中,全局的this指向windows对象

在NodeJS中,全局的this指向module.exports对象
  • 函数
1、普通函数
function fn(){
    console.log(this);
}

2、对象的方法
var obj = {
    name: "wwbb",
    say: function(){
        console.log(this.name)
    }
}

3、回调函数
var oBtn = document.getElementById("send");
oBtn.addEventListener('click', function(){
    console.log(this);    // 这个this指代oBtn这个按钮
})

4、箭头函数
const getName = () => {
    this.name = "xxx"
}

总结:123是运行时指定,4是编码时指定
2方法中

this是可以改变的
var obj = {
    name: "wwbb",
    say: function(){
        console.log(this.name)
    }
}
obj.say()  //this是 obj

var go = obj.say;
go()   //this是window

你可能感兴趣的:(javascript,this)