小白快速入门: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对象。
查找步骤:
- 箭头函数往上找{}包起来的区块
- 判断{}包起来的区块是function还是Object
- 如果是function箭头函数的this继承function的this(即再使用传统this指向查找)
- 如果是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()

浙公网安备 33010602011771号