js面试题:this指向
一、了解this关于this,我们需要了解两点this永远指向一个对象this的指向完全取决于当前执行环境(即该函数被调用的位置)//在一些文档中曾看到过js中this指向被分为n中情况,我个人感觉这是在将简单问题复杂化,解决问题的本质是将问题模型化,简单化,而不是引入多个特殊情况分析用阮一峰曾讲过的一句话,this指向完全取决于当前执行环境二、面试题var name = "lucy";var o
·
一、了解this
关于this,我们需要了解两点
- this永远指向一个对象
- this的指向完全取决于当前执行环境(即该函数被调用的位置)
//在一些文档中曾看到过js中this指向被分为n中情况,我个人感觉这是在将简单问题复杂化,解决问题的本质是将问题模型化,简单化,而不是引入多个特殊情况分析
用阮一峰曾讲过的一句话,this指向完全取决于当前执行环境
二、面试题
var name = "lucy";
var obj = {
name: "martin",
say1: () => {
console.log(this.name);
},
say2: function () {
console.log(this.name);
}
};
obj.say1();
obj.say2();
let say3 = obj.say1;
let say4 = obj.say2;
say3();
say4();
//lucy
//martin
//lucy
//lucy
三、解析
- obj.say1 <==> obj.say2 s1箭头函数 箭头函数中this固定化: 内部没有指定this, 所以箭头函数中绑的是上一级函数中存在的this(注意是存在的this, 而obj并不存在this, 所以继续往上找到了window)
- obj.say3 <==> obj.say4 s3和s4虽然都指向了lucy 但是执行过程是有区别的 s3在调用时内部没有this, 所以往上找到了this指向window, 而s4是因为在window中调用了这个函数, 所以函数体内部this指向window。
更多推荐
所有评论(0)