js
文章平均质量分 87
重阳微噪
这个作者很懒,什么都没留下…
展开
-
JS 进阶(八) 前后端通讯
1、前后端通讯1、AJAX: 前后端数据通讯非常重要的手段,基于AJAX从服务器获取数据,基于客户端实现数据的渲染JQuery $.ajax([options])Axios2、Fetch: 新的前后端通讯方案3、跨域处理jsonpiframe(document.domain.location.hash…)postMessageCORSproxy服务器渲染(前后端没有完全分离)客户端服务端浏览器获取代码后,进行解析+ DOM树+CSSOM树+RENDER树原创 2020-08-13 23:30:57 · 714 阅读 · 0 评论 -
JS 进阶(七) 深入学习实现Promise
Promise1、Promise介绍promise是进行异步管控的工具,通过链式调用取代回调函数层层嵌套提供更多解决异步的解决方案2、Promise的用法及注意第一步实例必须传入一个函数Promise实例中拥有两个默认属性,PromiseStatus、PromiseValue实例接收一个函数,函数接受两个参数,分别是成功和失败的回调方法状态一旦改变就不会再更改executor函数执行出错也会把实例的状态改为失败,且value是失败的原因第二步实现.then方法实例上添加原创 2020-08-04 18:49:57 · 197 阅读 · 0 评论 -
彻底弄懂图片懒加载
1、目标从浏览器底层渲染机制分析懒加载的意义最初基于JS盒模型实现的懒加载方案基于getBoundingClientRect的进阶方案手撕Lodash源码中的debounce(函数防抖)手撕Lodash源码中的throttle(函数节流)终极方案:IntersectionObserver未来设想:img.loading=lazy2、从浏览器底层渲染机制分析懒加载的意义* 为啥要做图片的延迟加载* 浏览器渲染页面* 1.构建DOM树* 2.构建CSSOM树原创 2020-08-03 18:03:38 · 199 阅读 · 0 评论 -
JS 进阶 (六) 浏览器事件模型DOM操作
事件对象和事件传播机制事件对象当事件触发、浏览器会把制定的方法执行,并且把全局下记录的当前操作信息的’事件对象’传递给这个函数 ,不管在哪个函数中,获取到的是同一个对象,存储的是当前操作的信息,和函数没关系let n;document.bofy.onclick = function (ev){ console.log('Body') console.log(ev === n)}box.onclick=function(ev){ console.log('Box') con原创 2020-08-03 17:57:04 · 293 阅读 · 0 评论 -
JS进阶(五)同步异步编程及浏览器的底层渲染机制
浏览器渲染机制浏览器底层渲染机制一个页面从服务器访问,拿到页面源代码之后做的事情是什么?生成Dom树(DOM Tree) => 对HTML文件的处理基于HTML获取的是流文件 (进制编码)把进制编码编译为具体的字符按照令牌TOKEN进行解析 (分词/断词)生成具体的节点 (元素标签/文本节点…)按照相互的依赖关系生成一个DOM树 (节点树)生成CSSOM Tree => 对CSS文件进行处理生成渲染树(Render Tree原创 2020-07-29 22:37:58 · 463 阅读 · 0 评论 -
JS笔试题(二)
JS面试题(二)一、原型原型链(1) 每个函数|构造函数都有一个原型prototype,用来存储公有的属性和方法(2) 每个原型对象都有一个constructor属性,指向函数本身(3) 每个实例都有__ proto __ 隐式指向所在类的原型原型链的机制是:当成员访问的时候,首先查找自身的私有属性,如果没有会隐式查找所在模块原型上的属性和方法,再查不到会一直通过__ proto __ 向上查找,一直找到Object.prototype 为止。最终原型链指向null结束,这种机制称为原型链机制原创 2020-07-22 08:57:02 · 570 阅读 · 0 评论 -
JS进阶(四)面向对象
1、对象、类、实例JS 本身是基于面向对象思想设计出来的一门编程语言,当我们给予JS进行程序设计的时候,也应该按照面向对象的想法去开发或者理解。对象,一种泛指类:对象的一部分实例:某个类中的具体事物2、内置类【数据类型】Number 、 String、 Boolean 、 (Symbol、BigInt)Object、Array、RegExp、Date…Function【每一个元素对象都有一个自己所属的类】HTMLHtmlElement / HTMLBodyE原创 2020-07-19 17:47:10 · 159 阅读 · 0 评论 -
JS笔试题(一)
JS面试题(一)一、变量提升1、console.log(a, b, c);var a = 12, b = 13, c = 14;function fn(a) { console.log(a, b, c); a = 100; c = 200; console.log(a, b, c);}b = fn(10);console.log(a, b, c);结果:undefined undefined undefined10 13 14100原创 2020-07-16 12:55:02 · 650 阅读 · 0 评论 -
JS进阶(三) 闭包,作用域链,垃圾回收,内存泄露
1.闭包作用域函数创建创建函数1、开辟一个堆内存(16进制的内存地址)2、声明当前函数的作用域(再哪个上下文创建的,它的作用域就是谁)3、把函数体内的代码当作字符串存储在堆内存当中(所以不执行没有意义)4、把函数的堆内存地址类似对象一样放到栈中供对象调用执行函数1、会形成一个全新的私有上下文(目的是供函数中的代码执行),然后进栈执行2、在私有上下文中有一个存放私有变量的变量对象 AO(xx)3、在代码执行之前要做的事情- 初始化它的作用域链<自己的上下文,函数的作用域>-原创 2020-07-12 17:56:38 · 802 阅读 · 0 评论 -
JS进阶(二)JS底层运行机制之堆栈内存
1.JS底层运行机制之堆(Heap)栈(Stack)内存相关理论知识ECStack(Execution context Stack) 执行环境栈: —— 内存中分出来用于执行js代码的空间EC(Execution context): —— 执行上下文, 为了区分全局和函数执行所处的不同范围(词法作用域),又可以分为全局执行上下文EC(G)和函数执行私有上下文EC(FUNC)VO(Varilbale Object)和AO(Active Object): —— 在每一个上下文代码执行的时候,都可能会原创 2020-07-11 15:05:40 · 468 阅读 · 0 评论 -
JS进阶(一)数据类型与隐式转换
1.数据类型分类(1)基本数据类型【7】string、 number、null、undefined、 boolean、bigInt、symbol注意⚠️:Number类型中NaN不是有效数字但是属于Number类型,typeof NaN //=> 'number'NaN === NaN // => falseObject.is(NaN,NaN) // => trueBigInt出现的意思是保证超出最大最小安全值仍然可以准确计算console.log(Number原创 2020-07-10 18:24:36 · 217 阅读 · 0 评论 -
js实用技能
1、根据给定的字符完成颜色的补零操作如: let s = “ae” 拼接为 ‘#0000ae’要点:利用new Array(3).fill(‘0’) // [‘0’,‘0’,‘0’] 进行补0然后在改成字符串function addZero(str){ return ['#',new Array(6-str.length).fill('0').join(''),...str].join('')}2、巧用Array.from()let friend = [{name:‘l原创 2020-07-03 16:56:50 · 198 阅读 · 0 评论 -
交换数组中两个值的位置
在拖拽等操作中,我们经常会操作数组,包括交换两个数组的位置。核心思想是利用splice的删除、新增、替换来实现,splice会改变原数组,所以最好在操作之前进行一下拷贝。splice会返回一个新的数组,删除的时候会返回删除的那个值。例子: let arr = [1,2,3,4,5,6,7]let arr1 = arr.slice() // 拷贝一份新数据 [1,2,3,4,5,6,7]删除操作// 删除第二个数据arr1.splice(1,1) // [2]arr1 // [1,原创 2020-06-18 11:37:13 · 2845 阅读 · 0 评论