
面试常问问题
文章平均质量分 53
cv全粘工程师
全粘
展开
-
【JS原型链,常见的修改原型对象的方法有哪些?】
JavaScript中每个对象都有一个内部属性[[Prototype]]指向它的原型对象,原型对象也是一个对象,也有自己的原型,这样一直往上追溯形成了原型链。原型链的作用是实现对象之间的继承和属性共享。当我们访问一个对象的属性时,如果这个对象本身没有这个属性,它就会沿着原型链向上查找,直到找到该属性或者到达原型链的末尾。JavaScript中的每个函数都有一个prototype属性,它是一个对象,它的主要作用是存储实例对象共享的属性和方法。原创 2023-10-08 17:47:12 · 921 阅读 · 0 评论 -
【Pinia和Vuex区别】
类的源码是最为关键的部分,它使用了Vue 3的响应式系统来实现了状态的管理和更新。同时,它还提供了一些方便的API来处理常见的状态管理需求,例如模块化、订阅等。Vuex采用了全局单例模式,通过一个store对象来管理所有的状态,组件通过store对象来获取和修改状态。Pinia则采用了分离模式,即每个组件都拥有自己的store实例,通过在组件中创建store实例来管理状态。Pinia的源码相对较为简单,主要是通过Vue的provide/inject实现store实例的分发和共享。方法来实现数据的传递。原创 2023-10-05 19:46:13 · 617 阅读 · 0 评论 -
【什么是闭包? 闭包产生的原因? 闭包有哪些表现形式?】
闭包是指一个函数可以访问并操作在其作用域之外的变量的能力。在 JavaScript 中,每当函数被创建时,就会创建一个闭包。// 输出 8在这个例子中,add函数返回一个新的函数,新函数可以访问add函数的参数x。addThree是一个闭包,它存储了add(3)返回的函数以及x的值,因此调用就会返回3 + 5 = 8。闭包在许多 JavaScript 库和框架中都得到了广泛的应用,它们可以用来实现许多高级功能,例如封装私有变量、延迟计算、事件监听和函数柯里化等。原创 2023-10-05 19:28:41 · 857 阅读 · 2 评论 -
【手写 Promise 】
接下来,我们需要定义一个 Promise 构造函数,它需要一个执行器函数作为参数。执行器函数接受两个参数 resolve 和 reject,它们是两个函数,用于修改 Promise 的状态。在构造函数中,我们定义了 Promise 的状态和值。onResolvedCallbacks 和 onRejectedCallbacks 数组用于存储 then 方法中传入的回调函数,当 Promise 的状态改变时,我们需要依次执行这些回调函数。原创 2023-10-04 20:10:50 · 150 阅读 · 0 评论 -
从您输入网站 URL 到其在屏幕上完成加载的整个过程
如果请求的网页中包含其他资源(例如图片、CSS 或 JavaScript 文件),浏览器会向服务器发出额外的请求以获得这些资源。用户输入网站 URL(例如,http://www.example.com)并按下“Enter”键。整个过程的时间取决于多种因素,例如用户的互联网连接速度、服务器性能和网页的大小和复杂性。网络协议根据 URL 中的信息确定要访问的服务器 IP 地址。服务器收到请求,并将所请求的网页返回给用户的浏览器。浏览器将这些资源组合起来,以完成网页的渲染。服务器返回每个请求的资源。原创 2023-10-04 20:05:43 · 317 阅读 · 0 评论 -
【浏览器缓存机制】
协商缓存是指在缓存过期后,浏览器再次请求相同的资源时,会向服务器发送请求,并获取该资源的最新修改时间或唯一标识。总的来说,强缓存是直接使用浏览器本地缓存,不需要与服务器进行通信,而协商缓存需要先与服务器进行一次通信,判断资源是否发生了变化,再决定是否使用本地缓存。强缓存是指在缓存有效期内,浏览器再次请求相同的资源时,直接从本地缓存中读取,不需要向服务器发送请求。协商缓存和强缓存都是浏览器缓存机制的一部分,但它们的实现方式和缓存过程有所不同。常见的浏览器缓存机制有两种:强缓存和协商缓存。原创 2023-10-04 19:59:31 · 144 阅读 · 0 评论 -
【git常用命令以及工作中都怎么工作】
常用命令:工作流程:原创 2023-10-04 19:55:23 · 257 阅读 · 0 评论 -
【vue 首屏加载优化】
使用 Vue SSR(服务端渲染):SSR 可以将 Vue 组件在服务端直接渲染为 HTML,然后再将渲染结果发送到客户端,这样可以大大缩短首屏加载时间。Vue 首屏加载优化指的是通过一系列的技术手段,尽可能地缩短首屏(即页面中可见的部分)的加载时间,提高用户体验。配置 webpack 的代码分割:将代码按照不同的功能或页面进行分割,提高首屏加载速度。使用懒加载:将页面中的图片、视频等资源分割成多个部分,只有在用户需要访问的时候才加载。使用异步组件:将页面中的某些组件异步加载,可以降低首屏加载所需的时间。原创 2023-10-04 18:56:59 · 523 阅读 · 0 评论 -
【描述一下 V8 执行一段JS代码的过程?】
优化:在代码执行期间,V8 还可以通过一些方法进行优化,例如,动态地重编译代码以提高执行速度,以及使用 JIT(Just-In-Time)编译器来编译热点代码以提高性能。执行代码:最后,V8 执行代码。词法分析:V8 首先读取 JS 代码,并将其分解成单个的标记或词汇单元(tokens),这些 tokens 是构建语言语法的基本元素。预编译(预处理):在执行代码之前,V8 还需要执行一些预编译步骤。总的来说,V8 的执行过程可以概括为:词法分析、语法分析、预处理、执行代码和优化。原创 2023-10-04 18:55:23 · 249 阅读 · 0 评论 -
【Vue2和Vue3的双向绑定区别】
如果 obj 尚未被代理,则使用 Proxy 对象创建一个新的代理对象 observed,并缓存该代理对象到原始对象 obj 的 __v_proxy 属性中,并返回 observed。模板语言的改进:Vue3中提供了更加灵活的模板语法,并增加了一些新特性,例如:v-model的多个绑定值、v-model修饰符的增加、el和ref的区别等。这可以通过 Proxy 来实现。在原理上,Vue3 会为数据对象中的每个属性创建一个 Proxy 对象,并通过该对象的 get 和 set 方法来实现数据对象的双向绑定。原创 2023-10-03 21:01:00 · 891 阅读 · 0 评论 -
【JS 原型对象和构造函数有何关系】
JavaScript 构造函数是一种特殊的函数,用于创建对象。它们与常规函数的区别在于,它们使用new关键字调用,并且通常用于定义对象的属性和方法。构造函数在 JavaScript 中可以用来创建自定义对象。构造函数的命名通常以大写字母开头(遵循一种约定俗成的命名规范)。通过构造函数,可以创建多个相似的对象,这些对象具有相同的属性和方法,但它们的属性值可能不同。在以上示例中,Person构造函数接受两个参数name和age。然后,构造函数创建一个名为greet的方法,该方法将在Person。原创 2023-10-03 20:51:45 · 205 阅读 · 0 评论 -
【什么是BigInt? 为什么需要BigInt?】
BigInt是一种数据类型,用于表示更大的整数。在JavaScript中,默认情况下,整数只能表示到2的53次方(即9007199254740992)。而BigInt可以表示更大的整数,甚至可以表示无限大的整数。原创 2023-10-03 20:47:10 · 2363 阅读 · 0 评论 -
【iframe使用方法】
iframe是HTML中的一个标签,可以用来嵌入其他网页或者文档。原创 2023-10-03 20:42:37 · 1496 阅读 · 0 评论 -
【CSS 中 link 和@import 的区别】
标签的加载顺序是有影响的,后面的样式表会覆盖前面的样式表。更加实用、灵活,也更具有兼容性,推荐使用。只能被 IE5 以上版本的浏览器解释。标签之间不存在加载顺序问题,但是多个。标签可以被所有的浏览器正确解释,而。标签在页面加载时同时加载,而。标签可以放在 HTML 文档的。只能放在 CSS 文件中使用。是在页面加载后才开始加载。原创 2023-10-02 22:00:39 · 496 阅读 · 0 评论 -
【CSS如何实现双飞翼布局】
它的主要特点是左右两列是浮动的,中间一列使用margin负值来达到“自适应”的效果。中间的.content设置一个margin-left和margin-right,确保其在左右两侧预留200px的空间,以容纳左右两列的内容。通过上面的代码,我们得到的效果是一个完整的双飞翼布局。左右两列的宽度固定,中间的列根据页面的宽度自适应,并且不需要使用嵌套的div来实现。.left、.right设置为float:left,使其能够在文档流中脱离,并设置为固定宽度,分别为200px。原创 2023-10-02 21:59:49 · 556 阅读 · 0 评论 -
【CSS如何进行圣杯布局】
圣杯布局是一种经典的三栏布局,其中中间的主栏宽度自适应,两侧的边栏宽度固定。实现圣杯布局可以使用CSS中的浮动、定位、负边距等属性。这样,我们就可以实现一个基本的圣杯布局。请注意,这只是一种实现方式,还有其他方法可以实现相同的布局效果。原创 2023-10-02 21:59:04 · 347 阅读 · 0 评论 -
【让一个元素水平垂直居中】
使用绝对定位,将父元素的 position 属性设置为 relative,然后将子元素的 position 属性设置为 absolute,再将左侧和上方属性设置为 50%,transform 属性设置为 translate(-50%, -50%),使其水平垂直居中。使用表格布局,将父元素的 display 属性设置为 table,然后将子元素的 display 属性设置为 table-cell,使用 vertical-align 和 text-align 属性将子元素水平垂直居中。原创 2023-10-02 21:58:11 · 201 阅读 · 0 评论