1. 前言
大家好,我是若川。好久以前我有写过《面试官问系列》,旨在帮助读者提升JS基础知识,包含new、call、apply、this、继承
相关知识。其中写了 面试官问:this 指向 文章。在掘金等平台收获了还算不错的反馈。
最近有小伙伴看我的 Vuex源码 文章,提到有一处this
指向有点看不懂(好不容易终于有人看我的源码文章了,感动的要流泪了^_^
)。于是我写篇文章答疑解惑,简单再说说 this
指向和尤大在 Vuex 源码中
是怎么处理 this
指向丢失的。
2. 对象中的this指向
var person = {
name: '若川',
say: function(text){
console.log(this.name + ', ' + text);
}
}
console.log(person.name);
console.log(person.say('在写文章')); // 若川, 在写文章
var say = person.say;
say('在写文章'); // 这里的this指向就丢失了,指向window了。(非严格模式)
3. 类中的this指向
3.1 ES5
// ES5
var Person = function(){
this.name = '若川';
}
Person.prototype.say = function(text){
console.log(this.name + ', ' + text);
}
var person = new Person();
console.log(person.name); // 若川
console.log(person.say('在写文章'));
var say = person.say;
say('在写文章'); // 这里的this指向就丢失了,指向 window 了。