当前位置: 首页 > news >正文

前端面试题09

74、定义类的方法有哪些

在JavaScript中,定义类的方法有以下几种方式:

1.使用函数声明:

function MyClass() {// constructor
}
MyClass.prototype.methodName = function() {// method body
};

2.使用类的方法缩写(ES6引入):

class MyClass {methodName() {// method body}
}

3.使用对象字面量赋值:

const MyClass = {methodName: function() {// method body}
};

4.使用ES6箭头函数:

class MyClass {methodName = () => {// method body}
}

无论使用哪种方式,类的方法都可以在类的实例对象上被调用。使用this关键字可以在方法中引用当前实例的属性和方法。 这些方法定义方式的选择取决于代码结构和个人偏好。在ES6中,推荐使用类的方法缩写方式,因为它更简洁和清晰,支持更多的语法特性。

75、Object.is()和==、===之间的区别

Object.is(value1, value2):

  • Object.is() 是一个静态方法,用于判断两个值是否严格相等。

  • 它的比较行为与 === 运算符一致,只有在两个值严格相等时返回 true,否则返回 false

  • === 运算符不同的是,Object.is() 对于 NaN 和 -0 有特殊处理,将它们视为不相等。

  • 示例:

    Object.is(3, 3);      // true
    Object.is('foo', 'foo');    // true
    Object.is(true, true);      // true
    Object.is(undefined, undefined);  // true
    Object.is(null, undefined);     // false
    Object.is(0, -0);       // false
    Object.is(NaN, NaN);      // false
    

== 运算符(相等运算符):

  • == 运算符用于将两个操作数进行比较,如果它们的值相等,返回 true,否则返回 false

  • 在进行比较之前,会进行类型转换,使得两个操作数具有相同的类型。

  • 进行比较时,会遵循一些特定的规则(类型转换规则)。

  • 例子:

    1 == 1;          // true
    '1' == 1;        // true
    0 == false;      // true
    null == undefined;  // true
    NaN == NaN;      // false
    

=== 运算符(严格相等运算符):

  • === 运算符用于比较两个操作数的值和类型是否完全相等,若完全相等,则返回 true,否则返回 false

  • 不进行类型转换。

  • 示例:

    1 === 1;                // true
    '1' === 1;              // false
    0 === false;            // false
    null === undefined;     // false
    0 === -0;				// true
    NaN === NaN;            // false
    

综上所述,Object.is() 是严格相等运算符的一种更严格的版本,主要区别在于对 0 和 -0 值的处理方式。而 == 运算符则会进行类型转换,再进行比较。最好的实践是在大多数情况下使用 === 运算符进行值的比较,只在需要考虑特殊情况时使用 Object.is()

76、Vue中虚拟DOM的作用

  1. 提高渲染效率:虚拟DOM可以通过diff算法来比较前后两个虚拟DOM树的差异,只对差异部分进行实际的DOM更新操作,避免对整个DOM树进行重新渲染,从而提高了页面的渲染效率。
  2. 简化开发:虚拟DOM将真实DOM的操作抽象成跨平台、可复用的JavaScript对象,使得开发者可以使用组件化的方式来构建应用,将UI拆分为多个可组合的组件,简化了应用的开发和维护。
  3. 跨平台支持:由于虚拟DOM是基于JavaScript对象的抽象结构,它可以支持跨不同平台的开发,比如在浏览器、桌面应用和移动端应用等平台上使用相同的组件和代码逻辑进行开发。
  4. 高效的跟踪和更新:Vue的响应式系统结合虚拟DOM可以实现高效的状态追踪和更新。当应用的状态发生变化时,Vue会通过虚拟DOM的diff算法计算出需要更新的最小DOM操作,只对需要更新的部分进行实际的DOM更新,从而提高了应用的性能。

虚拟DOM技术使得Vue可以在保持开发效率和性能之间取得平衡,提供了一个高效、组件化的方式来构建交互式的前端应用。它在Vue中扮演了关键的角色,使得开发者可以更好地管理和控制应用的状态和渲染过程。

77、CSS过渡属性和动画的区别

  1. 触发方式:过渡属性是响应状态改变的,只有当某个属性的值发生变化时,过渡效果才会触发。而动画是无需响应状态的改变,可以通过添加类名或使用JavaScript来触发动画效果。
  2. 使用场景:过渡属性适用于简单的状态改变,如鼠标悬停、元素出现/消失等,常用于实现一些平滑的过渡效果。动画则适用于更复杂、更精细的动画效果,可以实现更高级的交互和动态效果。
  3. 配置灵活性:动画相对于过渡属性在配置灵活性上更强大。使用关键帧(Keyframes)规则,可以在动画序列中定义多个阶段,并设置每个阶段所需的样式属性。这使得动画可以实现更复杂的变化和多样化的效果。
  4. 控制和自定义:过渡属性的控制比较简单,主要通过定义过渡属性和过渡的时间曲线来控制过渡的效果。而动画可以通过JavaScript控制动画的播放、暂停、重复等行为,并通过CSS提供的其他属性(如animation-fill-mode、animation-iteration-count等)进行自定义。

总结来说,过渡属性适用于简单的状态改变,并且控制和配置相对简单,可以实现平滑的过渡效果。而动画更适用于复杂的、精细的动态效果,可以通过关键帧规则和JavaScript控制,实现更丰富多样的动画效果。在实际开发中,可以根据需求来选择使用过渡属性还是动画来实现相应的动画效果。

78、让一段JavaScript代码异步执行

1、使用setTimeout函数:setTimeout函数可以在指定的时间间隔后异步执行指定的代码。你可以将你想要异步执行的代码包装在一个回调函数内,然后使用setTimeout来设置一个延迟的时间。

setTimeout(function() {// 在这里编写你想要异步执行的代码
}, 0);

使用setTimeout的这种方式可以立即将代码放入事件循环队列中,以便在其他同步代码执行完成后被执行。

2、使用Promise对象:Promise对象提供了一种更优雅的方式来处理异步操作。你可以创建一个Promise对象并在其中定义异步操作的逻辑。在异步操作完成后,调用resolve函数来标志操作成功并传递结果,或调用reject函数来标志操作失败并传递错误信息。

new Promise(function(resolve, reject) {// 异步操作的逻辑// 在操作成功后,调用 resolve(value)// 在操作失败后,调用 reject(error)
}).then(function(result) {// 在操作成功后的处理逻辑
}).catch(function(error) {// 在操作失败后的处理逻辑
});

你可以在Promise对象的then方法中处理成功的逻辑,在catch方法中处理失败的逻辑。

3、使用async/awaitasync/await是一种更简洁的处理异步操作的方法,它基于Promise对象。你可以将要执行的异步代码放在一个async函数中,然后使用await关键字来等待异步操作的完成。

async function asyncFunction() {await asyncOperation();  // 异步操作// 执行其他的代码
}

在使用await关键字时,它会暂停async函数的执行,直到异步操作完成并返回结果,然后继续执行之后的代码。

79、单页应用程序首屏优化有哪些方法

  1. 按需加载:将页面资源(如 JavaScript、CSS、图片等)进行按需加载,而不是一次性加载所有资源。可以使用异步加载、懒加载等技术,并优化资源的加载顺序,保证先加载必要的资源,再加载其他次要的资源。
  2. 代码分割:将应用程序的代码拆分成多个模块,按需加载模块,可以使用工具如Webpack等进行代码分割。这样可以减少首屏需要加载的代码量,提高页面渲染速度。
  3. 图片优化:使用适当的图片格式、压缩图片大小,减少网络传输的数据量。可以使用工具如ImageOptim、TinyPNG等进行图片优化,同时,可以使用懒加载技术(如LazyLoad)延迟加载图片,减少首屏需要加载的图片数量。
  4. 预渲染:对于一些静态内容不经常变化的页面,可以使用预渲染技术,在服务器端生成好首屏内容,并将其作为静态HTML文件返回给客户端,从而加快页面加载速度。
  5. 缓存策略:合理利用浏览器缓存和服务器缓存,将可能重复请求的资源缓存起来,减少请求次数和网络传输时间。可以使用HTTP缓存头,如Cache-Control、Expires等,设置合理的缓存时间。
  6. 代码优化:减少不必要的重绘和重排,避免过多的DOM操作,优化JavaScript代码,减少CPU计算时间。使用工具如Chrome DevTools进行性能分析,找出性能瓶颈并进行优化。
  7. 服务器优化:确保服务器的响应速度快,减少网络延迟。可以使用CDN(内容分发网络)来加速静态资源的加载,将资源分布到离用户更近的服务器上。
  8. 骨架屏:在页面加载过程中,可以使用骨架屏技术展示一个简单的页面结构,提供视觉反馈,让用户感知到页面正在加载,从而减少等待时间的焦虑感。

80、Vue中如何实现单页应用程序的页面缓存

1、使用组件:Vue提供了一个名为keep-alive的特殊组件,可用于缓存动态组件的状态。

<router-view v-slot="{ Component }"><keep-alive><component :is="Component"></component></keep-alive>
</router-view>

通过将组件包裹在周围,你可以缓存通过Vue Router渲染的组件。这样,当你在不同的页面切换时,组件的状态将被保留,而不会重新加载。

2、使用$route.meta属性:在路由配置中,可以为每个路由定义一个meta对象,用于存储一些自定义数据。你可以利用该属性来判断是否需要缓存页面。

const router = new VueRouter({routes: [{path: '/home',component: Home,meta: { keepAlive: true // 需要缓存}},{path: '/about',component: About,meta: { keepAlive: false // 不需要缓存}}]
})

然后,你可以在页面组件中通过$route.meta.keepAlive属性来决定是否缓存该页面。

3、使用activated和deactivated生命周期钩子:如果某个页面经常需要刷新或者不适合使用组件,你可以使用组件的activated和deactivated生命周期钩子来手动处理页面的缓存。

export default {activated() {// 页面被激活时触发// 在这里可以加载数据或执行其他操作},deactivated() {// 页面失去激活状态时触发// 在这里可以清除数据或执行其他操作}
}

当页面切换时,activated和deactivated钩子会被依次触发,你可以在这里处理缓存逻辑。

相关文章:

前端面试题09

74、定义类的方法有哪些 在JavaScript中&#xff0c;定义类的方法有以下几种方式&#xff1a; 1.使用函数声明&#xff1a; function MyClass() {// constructor } MyClass.prototype.methodName function() {// method body };2.使用类的方法缩写&#xff08;ES6引入&…...

网站更换IP的四大注意事项

1.对网站当中的数据进行备份 网站更换IP时可以将页面的数据库文件和站点文件通过下载工具在本地完成备份。 2.更换解析域名 从站点域名管理后台当中更换域名地址&#xff0c;改为新的IP地址。 3.确保IP安全 在用户更换IP前一定要确定IP是否安全&#xff0c;一旦IP存在不良…...

策略模式与简单工厂模式:终结if-else混乱,让代码更清爽

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概4500多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…...

TCP三次握手过程

什么是TCP tcp是一个面向连接的、可靠的、基于字节流的传输层通信协议 面向连接&#xff1a;TCP连接是一对一的&#xff0c;不能实现一对多或多对一&#xff0c;TCP在通信前要首先建立连接&#xff0c;连接成功后才能开始进行通信可靠的&#xff1a;TCP连接要保证通信过程的可靠…...

04-配置远程仓库的SSH免密登陆

配置SSH免密登录 配置步骤 创建好的远程仓库也可以使用SSH的方式进行访问,但如果没有配置公钥会有警告 第一步: 删除用户家目录下的.ssh目录,如果没有该目录或者该目录下已经有密钥了就不用执行该操作 #进入当前用户的家目录,删除.ssh 目录 LayneLAPTOP-Layne MINGW64 ~ $ r…...

【中文编码】利用bert-base-chinese中的Tokenizer实现中文编码嵌入

最近接触文本处理&#xff0c;查询了一些资料&#xff0c;记录一下中文文本编码的处理方法吧。   先下载模型和词表&#xff1a;bert-base-chinese镜像下载   如下图示&#xff0c;下载好的以下文件均存放在 bert-base-chinese 文件夹下    1. 词编码嵌入简介 按我通俗的…...

一文解决msxml3.dll文件缺失问题,快速修复msxml3.dll

在了解问题之前&#xff0c;我们必须首先清楚msxml3.dll到底是什么。DLL&#xff08;Dynamic Link Libraries&#xff09;文件是Windows操作系统使用的一个重要组成部分&#xff0c;用于存储执行特定操作或任务的代码和数据。msxml3.dll为Windows系统提供处理XML文档的功能。如…...

《React 知识点》第一篇 大括号使用{}

简介 大括号 " {} "可以用于包裹JavaScript的表达式或语句。以便在jsx中动态生成内容。 插入变量与表达式 function expressionTest() {const name "变量测试";return (<p><div>{name}</div><div>表达式 210 {2 100}</div…...

kafka入门(二): 位移提交

位移提交&#xff1a; Kafka的每条消息都有唯一的 offset&#xff0c; 用来表示消息在分区中对应的位置。有的也称之为 “偏移量”。 消费者每次在 poll() 拉取消息&#xff0c;它要返回的是还没有消费过的消息集&#xff0c; 因此&#xff0c;需要记录上一次消费时的消费位…...

PG时间计算

PG数据库&#xff0c;时间计算使用场景总结 日期之差 --**获取秒差** SELECT round(date_part(epoch, TIMESTAMP 2019-05-05 12:11:20 - TIMESTAMP 2019-05-05 10:10:10)); --**获取分钟差** SELECT round(date_part(epoch, TIMESTAMP 2019-05-05 12:11:20 - TIMESTAMP 20…...

基于51单片机的交通灯_可调时间_夜间+紧急模式

51单片机交通灯 1 讲解视频&#xff1a;2 功能要求3 仿真图&#xff1a;4 原理图PCB5 实物图6 程序设计&#xff1a;7 设计报告8 资料清单&#xff08;提供资料清单所有文件&#xff09;&#xff1a;设计资料下载链接&#xff1a; 51单片机简易交通灯_可调时间_夜间紧急 仿真代…...

网络通信原理,进制转化总结

来源&#xff0c;做个笔记&#xff0c;讲的还蛮清楚通信原理-2.5 数据封装与传输05_哔哩哔哩_bilibili ip地址范围...

西南科技大学(数据结构A)期末自测练习三

一、填空题&#xff08;每空1分&#xff0c;共10分&#xff09; 1、为解决计算机主机与打印机之间速度不匹配的问题&#xff0c;通常设置一个打印数据缓冲区。主机将要输出的数据依次写入缓冲区&#xff0c;打印机则依次从缓冲区中取出数据&#xff0c;则该换缓冲区的逻辑结构…...

【halcon】裁剪

前言 目前我遇到的裁剪相关的函数都是以clip打头的函数。一共4个&#xff1a; clip_end_points_contours_xldclip_contours_xldclip_regionclip_region_rel 前面两个是对轮廓的裁剪。 后面是对区域的裁剪。 裁剪轮廓的两端 clip_end_points_contours_xld 用于实现裁剪XLD…...

vue+less+style-resources-loader 配置全局颜色变量

全局统一样式后&#xff0c;可配置vue.config.js实现全局颜色变量&#xff0c;方便在编写时使用统一风格的色彩 一、新建global.less 二、下载安装style-resources-loader npm i style-resources-loader --save-dev三、在vue.config.js中进行配置 module.exports {pluginOpt…...

第二次量子化

专栏目录: 高质量文章导航-持续更新中 前置复盘: 玻色子和费米子: 首先,我们希望把描述单粒子态的量子力学推广到全同多粒子体系。我们的做法是从单粒子态的希尔伯特空间(Hilbert Space)出发,构造全同多粒子态的态空间——福克空间(Fock Space),它实际上就是无穷个…...

(三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言Q1&#xff1a;卷积网络和传统网络的区别Q2:卷积神经网络的架构Q3:卷积神经网络中的参数共享&#xff0c;也是比传统网络的优势所在4、 具体的实现代码网络搭建…...

【代码】多种调度模式下的光储电站经济性最优 储能容量配置分析matlab/yalmip

程序名称&#xff1a;多种调度模式下的光储电站经济性最优储能容量配置分析 实现平台&#xff1a;matlab-yalmip-cplex/gurobi 代码简介&#xff1a;代码主要做的是一个光储电站经济最优储能容量配置的问题&#xff0c;对光储电站中储能的容量进行优化&#xff0c;以实现经济…...

深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等

文章目录 1、卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;1.1 优点1.2 缺点1.3 应用场景1.4 网络图 2、循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNNs&#xff09;2.1 优点2.2 缺点2.3 应用场景2.4 网络图 3、长短…...

ChatGPT成为“帮凶”:生成虚假数据集支持未知科学假设

ChatGPT 自发布以来&#xff0c;就成为了大家的好帮手&#xff0c;学生党和打工人更是每天都离不开。 然而这次好帮手 ChatGPT 却帮过头了&#xff0c;莫名奇妙的成为了“帮凶”&#xff0c;一位研究人员利用 ChatGPT 创建了虚假的数据集&#xff0c;用来支持未知的科学假设。…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

进程地址空间(比特课总结)

一、进程地址空间 1. 环境变量 1 &#xff09;⽤户级环境变量与系统级环境变量 全局属性&#xff1a;环境变量具有全局属性&#xff0c;会被⼦进程继承。例如当bash启动⼦进程时&#xff0c;环 境变量会⾃动传递给⼦进程。 本地变量限制&#xff1a;本地变量只在当前进程(ba…...

基于ASP.NET+ SQL Server实现(Web)医院信息管理系统

医院信息管理系统 1. 课程设计内容 在 visual studio 2017 平台上&#xff0c;开发一个“医院信息管理系统”Web 程序。 2. 课程设计目的 综合运用 c#.net 知识&#xff0c;在 vs 2017 平台上&#xff0c;进行 ASP.NET 应用程序和简易网站的开发&#xff1b;初步熟悉开发一…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

如何在看板中有效管理突发紧急任务

在看板中有效管理突发紧急任务需要&#xff1a;设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP&#xff08;Work-in-Progress&#xff09;弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中&#xff0c;设立专门的紧急任务通道尤为重要&#xff0c;这能…...

《通信之道——从微积分到 5G》读书总结

第1章 绪 论 1.1 这是一本什么样的书 通信技术&#xff0c;说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号&#xff08;调制&#xff09; 把信息从信号中抽取出来&am…...

tree 树组件大数据卡顿问题优化

问题背景 项目中有用到树组件用来做文件目录&#xff0c;但是由于这个树组件的节点越来越多&#xff0c;导致页面在滚动这个树组件的时候浏览器就很容易卡死。这种问题基本上都是因为dom节点太多&#xff0c;导致的浏览器卡顿&#xff0c;这里很明显就需要用到虚拟列表的技术&…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

站群服务器的应用场景都有哪些?

站群服务器主要是为了多个网站的托管和管理所设计的&#xff0c;可以通过集中管理和高效资源的分配&#xff0c;来支持多个独立的网站同时运行&#xff0c;让每一个网站都可以分配到独立的IP地址&#xff0c;避免出现IP关联的风险&#xff0c;用户还可以通过控制面板进行管理功…...