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,结果是 唐三;
