- 博客(18)
- 收藏
- 关注
原创 js中的this指向
显示转化一般是依赖call,apply,bind的函数去改变this指向,call和apply的区别是传的参数不同,call使用的更多它传参是列表,apply传参是数组,而bind不同于二者它会返回一个新函数,然后显示转化的优先级高于隐式转化。new中的this一般都是指向新的实例化对象,它 的优先级是高于隐式转换和显示转化的,究其原因好像是new的过程中也调用了显示转化,所以如果有显示转化new中的显示转化会覆盖旧的显示转化。默认绑定规则是指向window的,比如函数的独立调用,定时器,立即指向函数。
2023-08-27 16:45:02
108
原创 原型相关知识
原型链:对象都有__proto__属性,这个属性就是指向它的原型对象,原型对象也是对象,所以它也有__proto__属性,指向它的 原型对象,像这样一次一次形成的链式结构就是原型链,在最上层找不到则会返回null。原型可以用来继承,但是原型继承有缺点:一个子对象修改了原型对象共享数据会影响到所有继承自该原型的对象。原型对象:每个函数都有prototype属性,称之为原型,这个就是原型对象,在这个原型可以放一些属性和方法,可以共享给实例对象使用,同时原型也是可以继承的。
2023-08-04 16:07:56
129
1
原创 ES新特性(一)
2,this指向问题,它this是指向上一个函数的this指向,不能使用apply,call,bind函数。箭头函数:箭头函数与普通函数区别有如下几点。1,不能作为构造函数,同时也意味它没有原型。3,不能使用argument参数传值。
2023-07-31 09:46:58
139
1
原创 浏览器渲染机制
第二种情况有js的情况:首先数据会去解析html成dom树,这里是部分解析,紧接着遇到css去解析生成CSSom树,遇到js会先去停止dom树生成,而js去解析,不过js和html的解析执行需要先等cssom完全解析,然后最后再去执行js,然后生成Rendtree,后面步骤如上。第一种没有js的情况:首先数据中的html会被解析生成dom树,如果遇到css就去同时生成CSSOM树,然后两者合并生成Rendtree,紧接着去根据渲染树去计算节点的位置和大小,最后把渲染树以像素的形式绘制在页面。
2023-07-30 15:36:45
111
1
原创 同源策略以及解决方法
JSONP:首先在前端 代码中写入一个用于执行服务端返回来的回调函数,然后再script标签中的src写入要访问的地址并且携带回调函数的一系列参数,服务端那边根据请求的url和回调函数,生成一个携带信息的js代码片段返回给前端,然后前端再通过回调函数去处理收到的数据,z这个流程就相当于洗钱,script是漏洞,回调函数就洗钱机构,服务端那边给的不能直接使用,但是可以通过script标签这个漏洞,把想要发送的信息发给回调函数,回调函数洗白了,客户端又可以用了。解决策略:利用JSONP,cros,反向代理。
2023-07-29 15:51:41
414
原创 promise
promise中all()方法,它是接受几个promise对象同时处理,当几个对象处理完,如果几个对象都是fulfilled状态那么返回的新的promise对象也是fulfilled,并且它的值是一个数组promise,里面是一个状态和几个值,如果几个对象中只要有一个是rejected状态,那么它就会也是rejected状态和返回的reason。promise中的race()方法,它和它的英文名有点想,比赛的意思,同时接受几个promise对象,谁先转化状态,那么它返回的新promise就是谁。
2023-07-28 14:40:32
61
1
原创 闭包相关知识
闭包的关键点在作用域链,我们在调用函数执行函数的时候我们会区先去创建执行上下文环境,在这期间会有创建阶段和执行阶段,创建阶段有作用域,变量对象和this指向三种,而作用域链包括当前函数变量对象加父级变量对象,而js是单线程的,闭包就是依靠父级变量对象才可以访问其他函数的局部变量,如果在外部因为不在函数执行环境内当然不能去访问函数。闭包:闭包是有权访问另一个函数作用域变量的函数,内层函数访问外层函数作用域。注意点:闭包不一定就必须要有return,这同时也意味着不一定会存在内存泄漏。
2023-07-28 10:13:18
73
1
原创 http常见优化途径
工作流程原理:当用户输入url到浏览器,浏览器解析url,然后去浏览器缓存中查询有没有对应的缓存的Ip想先白嫖相当于找朋友要,如果白嫖失败就回去啃老,查自己的操作系统缓存,如果还是没有只好出去打工发送请求获取对应的Ip,首先本地服务器向根服务器要,然后再找顶级域名要,然后再找权限域名要,一路求爷爷告奶奶,获取有两种方式,一种好一点的递归,找人然后它再找人最后告诉本地,第二种迭代,各服务器开启踢皮球模式,本地服务器挨个去拜访,最后终于拿到ip,然后存到浏览器缓存和操作系统缓存。
2023-07-28 09:10:29
114
1
原创 HTTP相关知识点
get:一般用来请求获取数据的,一般来说没有请求体,请求参数放在URI上面可以看到,安全性较低,不适合敏感传输,但是get请求一般会默认缓存的,浏览器下一次再输入相同的URI如果有缓存可以直接去读取缓存,并且get是幂等的,多次请求一般对服务器没有影响没有副作用。post:一般是用来提交数据的,参数藏于请求体,安全性能较高,但是默认是不缓存的,每次都需要重新发送请求,post请求一般不是幂等的,因此多次请求会对服务器和资源产生副作用,post一般用来提交数据。请求报文:请求行+请求头+换行+请求体。
2023-07-04 07:53:19
59
原创 浏览器缓存机制
cache-control:规定一个字段max-age,这个字段规定了一段有效的时常不是规定具体时间失效,也就是服务器返回后max-age时长能用缓存,这个还可以配合其他指令比如private只能服务器缓存,代理不能缓存。no-cache跳过当前强缓存直接进行协商缓存。当浏览器再次发送请求给服务器,在请求头中也会携带这个唯一标识符,服务器会进行比对,如果不一样则重新发送数据和唯一标识符,不然就返回304,继续读取缓存中的数据。在过期时常过期和缓存标识失效时,也就是强缓存失效后,浏览器开始采取协商缓存策略。
2023-06-26 16:09:58
1001
1
原创 浏览器解析URL全部流程
8,页面布局和渲染:浏览器将HTML解析成dom树,将css解析成CSSOM树,将它们合成RenderTree,计算它们大小和在页面的具体位置,然后将它们布局到页面上。9,加载其他资源:去加载页面存在的其他加载资源,如css文件,js文件和图片等,浏览器根据HTML文档解析的结果,去重新发送请求。11,用户交互:用户可以和页面互动,去实现js代码功能,也可以去点链接等去重新发送请求,重复执行上述代码。4,发送请求:浏览器构建请求报文,请求报文包括请求行,请求头,请求体等信息,然后将请求报文发送给服务器。
2023-06-26 09:35:08
1162
1
原创 vue生命周期和整个渲染流程
beforeDestroy:在组件被销毁之前调用,此时实例完全还可以用,通常这个阶段来做一些清理工作,比如清理定时器,事件监听,解除自定义事件。13,虚拟dom对页面进行重新渲染和打补丁,根据最新的数据更新虚拟dom,并进行对比,进行最小化ndom操作。5,注入依赖,初始化事件系统,进行组件依赖注入,全局依赖注入组件中,初始化事件系统。16,实例销毁,调用$destroy函数,解除dom关联,自定义事件,移除事件监听。1,创建vue实例,进行各种初始化操作,合并选项,初始化数据,方法,计算属性等。
2023-06-24 19:53:35
1630
1
原创 vue中常用的指令以及修饰符
v-cloak 解决网速慢等一系列问题,当未及时解析渲染对插值表达式进行隐藏 配合css使用。.lazy 与input元素配合使用,将监听事件延迟到change事件触发。v-pre 跳过指令编译,直接将元素作为静态内容渲染,注意不要和插值语法使用。v-if/v-else-if/v-else 条件渲染。.capture 使用事件捕获而不是事件冒泡。v-model 对表单元素进行双向数据绑定。.native 监听组件根元素的原生事件。.once 事件只触发一次。
2023-06-23 15:53:00
173
1
原创 watch和computed
计算属性是依靠返回值来实现的,所以不能去实现异步操作,具体实现步骤:当模板第一次解析的时候,调用getter方法对其值进行计算,然后保存缓存返回模板进行渲染,以后如果所依赖的数据源不发生改变,它是不会从新解析计算的而是从缓存中读取,如果依赖的数据源发生改变了,则会再次调用getter方法重新解析计算缓存渲染更新。watch是侦听属性,一般有两种写法,对象的写法比较全面,可以实现深度监听,还有一种就是方法的写法,比较常用是对象写法的阉割版。2,监听多个数据源变化,需要监听数组或者对象的变换。
2023-06-22 17:49:03
228
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人