【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,结果是 唐三;
推荐阅读
- 前端面试题|JavaScript前端经典面试题之ES6面试题汇总es6
- vue|Vue+Electron开发跨平台桌面应用(实战)
- web前端|如何去调试前端JS代码(以Chrome谷歌浏览器为例)
- java|几个前端浏览器调试小技巧
- 单元测试|又一个 4w Star 的大厂开源项目不维护了!
- 前端|TypeScript函数参数和返回类型定义
- HTML5期末大作业|大学生体育运动网页设计模板代码 校园兵乓球网页作业成品 学校篮球网页制作模板 学生简单体育运动网站设计成品
- vue|【实战篇】使用 Vue3 + Ts + Egg 开发一个ProTable(包含接口实现)
- vue|Vuex——Mutation传递参数