【前端面试】this的指向_不爱吃糖的程序媛夏天,web前端面试项目中的问题包括

简介: 【前端面试】this的指向_不爱吃糖的程序媛夏天,web前端面试项目中的问题包括

正文

二、事件绑定中的this

给dom元素的某个事件行为绑定方法,当时间触发方法执行,方法中的this就是当前dom元素本身。

document.body.onclick = function () {
  console.log(this)
}
document.body.addEventListener('click', function () {
  console.log(this)
})

注:IE6-IE8中基于attachEvent实现事件绑定,事件触发方法执行时,方法中的this不在元素本身,一般情况下都是指向window。

/\* document.body.attachEvent('onclick', function () {
 console.log(window)
 console.log(this)
}) \*/
三、普通函数执行中的this

1、函数执行,看函数前是否有“点”,有“点”,“点”前面是谁,this就指向谁,如果没有“点”,this就指向window(js严格模式下是undefined)

function fn(){
   console.log(this);
}
fn(); //window
let obj={
  fn:function(){
    console.log(this);
  },
  fn1:{
    fn2:function(){
      console.log(this);
    }
  }
}
obj.fn(); //obj
obj.fn1.fn2(); //obj.fn2 

闭包中的this 一般都指向window

let obj={
    fn:function(){
      return function(){
        console.log(this);
      }
    }
  }
obj.fn();

2、自执行函数执行,其内的 this 一般都是window,严格模式下为undefined

3、回调函数中的this为window或者undefined,除非做过特殊处理(如:数组的forEach方法·)

[1,2,3].forEach(function(){
   console.log(this); //window
 });
 //forEach对内部this进行处理
 [1,2,3].forEach(function(){
   console.log(this); //{a:10}
 },{a:10})
四、箭头函数中的this

箭头函数中没有自己的this,所用到的this都是上下文中的this

箭头函数可以保留this的指向,因为它本身没有。

let obj = {
  n: 1000,
  fn() {
    setTimeout(function () {
      // this ==> window
      console.log(this)
    }, 500)
    setTimeout(() => {
      // this 所处上下文中的this => obj
      console.log(this)
    }, 1000);
  }
}
obj.fn()
#### react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
![](https://ucc.alicdn.com/images/user-upload-01/img_convert/dab505d822f370449dde55eb65e06304.webp?x-oss-process=image/format,png)
![](https://ucc.alicdn.com/images/user-upload-01/img_convert/465bae7a52707e3cc1aa31d9c90a37a1.webp?x-oss-process=image/format,png)
**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**
**需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)**
![img](https://ucc.alicdn.com/images/user-upload-01/img_convert/18fe2d6d6bd24a483a60173a8b77db1c.png)
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
加V获取:vip1024c (备注前端)**
[外链图片转存中...(img-JAFvnPdb-1713432092767)]
**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**


相关文章
|
并行计算 前端开发 JavaScript
Web Worker:让前端飞起来的隐形引擎
在现代 Web 开发中,前端性能优化是一个至关重要的课题,尤其是对于计算密集型的应用,如图像处理、视频处理、大规模数据分析等任务。单线程的 JavaScript 引擎常常成为性能瓶颈,导致应用变得迟缓。Web Worker,作为一种强大的技术,使得前端能够在后台进行并行计算,从而实现高效的任务处理,不影响主线程的运行和用户的交互体验。
925 108
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
935 1
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
1269 64
|
Web App开发 编解码 移动开发
零基础音视频入门:你所不知道的Web前端音视频知识
本文回顾了Web端音视频的发展历程,同时还介绍了视频的编码、帧率、比特率等概念,提到了Canvas作为视频播放的替代方案,以及FFmpeg在音视频处理中的重要作用等知识。
460 1
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
1199 0
|
人工智能 安全 程序员
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
用 Colab 和 ngrok 免费部署你的 Web UI 项目,随时随地访问!
1836 12
|
监控 安全 测试技术
如何在实际项目中应用Python Web开发的安全测试知识?
如何在实际项目中应用Python Web开发的安全测试知识?
358 61
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
1391 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布