面试
JJYdesu
这个作者很懒,什么都没留下…
展开
-
【Vue相关】Vue的生命周期
Vue实例有一个完整的生命周期,即开始创建->初始化数据->编译模板->挂载Dom->渲染->更新->卸载等一系列的过程,官网给出的图如下,外加大佬的一些注明。beforeCreate:数据观测和初始化事件还未开始,此时data的响应式追踪、event/watcher都还没有被设置,也就是说不能访问到data、computed、watch、methods上的方法和数据。created:实例创建完成,实例上配置的data、computed、watch、meth原创 2021-12-28 15:24:43 · 417 阅读 · 0 评论 -
【Vue相关】单页面应用(SPA)与多页面应用(MPA)的区别
SPA(单页面应用) 只有一个主页面的应用,一开始只需要加载一次js、css等相关资源,所有内容都包含在主页面,对每一个功能模块组件化。页面的跳转,实际上就是切换相关组件,仅仅刷新局部资源。MPA(多页面应用) 有多个独立页面的应用,每个页面必须重复加载js、css等相关资源,多页面应用的跳转需要刷新整页的资源。对比如下:对比项SPAMPA结构一个主页面+许多模块的组件许多个完整的页面体验页面切换快,体验良好;但是初次加载文件过多时,需要做相关的调优网速慢的时候页面原创 2021-12-27 22:15:16 · 853 阅读 · 0 评论 -
JS深拷贝的实现
原文再续,书接上一回(【JavaScript笔记06】赋值、浅拷贝、深拷贝),在这篇文章实现一下深拷贝的方法。首先来个最基本的拷贝,创建一个新对象,遍历需要克隆的对象,将需要克隆对象的属性依次添加到新对象上即可,但是面对多层的对象就不行了。let obj1 = { name:'jjy', age:23, child:{ id:4 }}function t1(source){ let cloneTarget = {} for(const原创 2021-12-16 15:06:32 · 481 阅读 · 0 评论 -
JavaScript中基本类型和引用类型
基本类型:String,Number,Boolean,Null,Undefined,Symbol引用类型:Object,Array,Function这两种类型最主要的区别在于声明变量时候内存分配不同,对基本类型而言,它的变量值是直接存储在栈内存中的,比如:var a = 10var b = ab = 20这里声明了一个变量a,它的值就直接放在了栈内存中,而复制则是直接拷贝了一份到b,改变b不影响a的值。对于引用类型而言,声明变量的时候,栈内存存储的是值所在的内存地址,而真正的值存放在堆内存原创 2021-12-15 16:04:13 · 1436 阅读 · 1 评论 -
为什么const定义的数组和对象的值可以变
总所周知在js中var、let和const的区别是,var只有全局作用域和函数作用域的的概念,如果用var在函数里面声明变量,则这个变量属于当前函数的作用域,而如果是在函数外的任何地方声明,则属于全局作用域。而let是块级作用域。var存在变量提升,无论var出现在作用域的哪个位置,这个声明都属于当前的整个作用域,在任何地方都能访问到,而let没有。var声明的变量可以重复声明,而let不可以。const一般用来声明常量,且其值不可变。但是在实际使用的时候会发现,const的值其实是可以"变"的原创 2021-12-15 11:09:55 · 3777 阅读 · 0 评论 -
简述HTTPS的工作流程
客户端在使用HTTPS与WEB服务器通信时有以下几个步骤:客户端使用https url访问服务器,则要求web服务器建立ssl连接;web服务器接收到客户端的请求后,会将网站中的证书(证书中包含了公钥),传输给客户端;客户端和web服务端开始协商SSL连接的安全等级;客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站;web服务器通过自己的私钥解密出会话密钥;web服务器使用会话密钥来加密与客户端之间的通信。...原创 2021-12-09 14:32:41 · 3490 阅读 · 0 评论 -
JS判断一个对象是否为数组类型
总所周知JavaScript在一般情况下可以利用typeof来判断一个数据的类型,除了一些特殊情况,比如typeof null会输出object。这里要说的是另一种情况,用typeof判断数组也会输出object。首先创建一个数组let arr = [1,2,3]//或 let arr = new Array([1,2,3])1.instanceofconsole.log(arr instanceof Array) // true2.Array.isArray()console.log(原创 2021-11-29 21:41:29 · 307 阅读 · 0 评论 -
JavaScript 继承
文章目录一、原型链继承二、构造函数继承三、组合继承(原型+构造函数)四、原型式继承五、寄生式继承六、寄生组合式继承继承是面向对象编程的一种独特的编程方式,在JavaScript里面有六种实现继承的方法。父类function Animal(name){ this.name = name || 'animal' this.sum = function(){ console.log(this.name + '正在睡觉') }}Animal.prototype.ag原创 2021-11-26 15:42:49 · 287 阅读 · 0 评论 -
width&min-width&max-width的关系
min-width和max-width分别限制了元素的最小宽度和最大宽度,当浏览器缩小导致元素宽度小于min-width时,元素的width就会被min-width的值取代,浏览器出现滚动条来容纳元素,如果像下面这样写: .container { width: 600px; height: 300px; background-color: red; min-width: 500px; }实际上这样直接设定了width为600px,原创 2021-10-03 21:33:14 · 579 阅读 · 0 评论 -
BFC布局规则
BFC布局规则如下:内部的Box会在垂直方向上一个接一个的放置。内部的Box垂直方向上的距离由margin决定,要注意的是BFC内的块级元素依然会有外边距折叠,但可以在元素外用BFC来包裹,解决相邻元素间外边距折叠问题。BFC的区域不会与float的元素区域重叠。计算BFC的高度时,浮动子元素也参与计算。意味着可以利用BFC解决浮动带来的高度塌陷的文通。BFC就是页面上的一个独立容器,容器里面的子元素不会影响外面元素。意味着可以用给父元素设置BFC,解决margin-top塌陷的问题。..原创 2021-10-03 17:48:53 · 245 阅读 · 0 评论 -
子元素的margin-top作用在父元素上
这是因为css的外边距合并规则。两个相邻或嵌套的块级元素其外边距会合并为一个外边距,相邻的元素表现出两个外边距取大的那个,而嵌套的元素则表现为子元素设置margin-top,作用在父元素上。解决方案如下:将父元素设置为BFC。父元素设置padding-top,取代子元素设置margin-top,能达到同样的效果。...原创 2021-10-03 17:08:28 · 516 阅读 · 0 评论 -
JavaScript中的this小总结
之前也有一篇文章讲过JavaScript的this指向问题,不过感觉那篇讲得比较繁琐,这篇文章就简单再总结一下各种情况下this的指向,大体来说,this是指向代码调用者/执行者,所以在一个对象里面直接this,它指向的就是window:var age = 24var obj = { age:18, obj2:{ age:this.age }}console.log(obj.obj2.age) //24现在总结一下四种函数调用情况下this的指向。原创 2021-09-05 13:41:19 · 128 阅读 · 1 评论 -
JavaScript的事件循环(宏任务与微任务)
JavaScript是一门单线程语言,所以在同一时间都只有一个任务在执行,其异步操作时通过事件循环机制来实现的,其中异步操作又分为宏任务和微任务:宏任务微任务scriptprocess.nextTicksetTimeout、setIntervalPromise.then/catch/finallyI/O……大体上这些任务的执行顺序为主线程—>微任务—>宏任务,执行过程中有三个部分组成,分别是执行栈、宏任务队列(消息队列)和微任务队列,流程图如原创 2021-09-05 09:48:36 · 162 阅读 · 0 评论 -
浏览器渲染页面全流程
上文对浏览器渲染页面的过程只是一笔带过,本文将展开讲述一下浏览器拿到html/css等文件资源后是如何对页面进行渲染的,总体可以分为以下几步:解析HTML,构建DOM树。解析CSS,生成CSSOM树。合并DOM树和CSSOM树,生成render树布局render(Layout/reflow),计算各元素尺寸、位置。绘制render树(paint),绘制页面像素信息。浏览器将各层的信息发送给GPU,GPU将各层合成,显示在屏幕上。对于流程1,浏览器首先经过token原创 2021-09-02 16:39:41 · 632 阅读 · 0 评论 -
从输入URL到浏览器显示页面的过程
从输入URL到浏览器显示页面的过程从输入URL到浏览器显示页面的整个过程大概会经历以下几个步骤,根据本人的理解有些能展开叙述,有些则只能先一笔带过。一、找出域名和IP地址的对应关系总所周知,我们要访问一个网站,实际上是需要通过IP地址进行访问的,域名只是方便用户记忆,因此域名需要与IP地址一一对应。要找到这个对应关系需要经历以下步骤。查看本地hosts文件,查看是否有对应规则,若有,则直接使用该ip地址,若没有,则进入下一步。浏览器向本地DNS服务器发出一个DNS请求,说明需要查询该域名与ip地原创 2021-09-01 15:38:39 · 442 阅读 · 0 评论