JS中this的指向问题(面试题)

【JS中this的指向问题(面试题)】// 1.函数直接调用时,默认this指向window;
function demo(){
console.log(this); //第一个this
function demo1(){
console.log(this); //第二个this
}
demo1(); //在demo调用后,demo1是在demo里面直接调用,所以此时第二个this指向window;
}
demo(); //在全局中调用,此时第一个this指向window;

// 2.this一般指向它的调用者(全局变量默认是挂载在window中的);
window.name="小舞";
let obj={
name:"唐三",
demo:function demo(){
console.log(this.name); //第一个this
function demo1(){
console.log(this.name); //第二个this
}
demo1(); //由1我们可以知道,此时第二个this指向window,所以输出的结果是 小舞;
}
}
obj.demo(); //demo是obj调用的,此时第一个this指向的就是obj,输出的结果是 唐三;

// 3.ES6的箭头函数中,this只指向它的创建者(声明时它所在的作用域);
window.name="小舞";
let obj={
name:"唐三",
demo:function demo(){
console.log(this.name); //第一个this
let demo1=()=>{
console.log(this.name); //第二个this
}
demo1(); //demo1是一个箭头函数,所以此时第二个this指向的也是obj,结果是 唐三;
}
}
obj.demo(); //demo是一个传统函数,所以第一个this还是指向它的调用者obj,结果是 唐三;

    推荐阅读