- 博客(163)
- 收藏
- 关注
原创 js手写-迭代器与生成器
/1.使用普通函数// }// }else{// }// }// }// }// }//2.使用生成器函数i++) {let room = new Room("房间1", []);room.entry("张三");room.entry("李四");
2025-01-24 11:59:19
249
原创 js手写-实现Promise的then方法
因为在new的时候executor立即执行,会执行resolve函数,然后执行到this.onFUlfilled()* 但是此时then方法还没有调用,所以this.onFulfilled() == undefined。而微任务中的代码执行先于宏任务,因此当定时器时间到了之后,触发then方法,只是将函数存储进了数组中,新增两个数组,存储then方法传入的回调函数。将这段代码包裹成异步代码,使其在。修改传入的then中的回调函数,由于状态已经确定不会再执行。then方法之后执行。
2025-01-21 22:16:23
680
原创 js手写-继承的实现方式
设置子类的原型,减少调用父类构造函数的开销。只能继承父类的属性,不能继承父类原型。调用两次父类构造函数,开销较大。子类实例修改属性,会相互影响。在组合继承的基础上,通过。
2025-01-20 15:23:38
202
原创 python数据分析与可视化二
使用t检验 计算男生与女生在每个科目上的成绩差异性。绘制男生女生在各个科目上的平均成绩雷达图。总成绩差异(平均值/标准差/中位数)按性别统计各个科目成绩的中位数。男女生在各科目的成绩分布直方图。用箱型图表示男女生总成绩。
2025-01-09 16:07:11
195
原创 js迭代器模式
ES6约定,任何数据结构只要具备Symbol.iterator属性(这个属性就是Iterator的具体实现,它本质上是当前数据结构默认的迭代器生成函数),就可以被遍历——准确地说,是被for…循环和迭代器的next方法遍历。的背后正是对next方法的反复调用。四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们,所以ES6在推出新数据结构的同时也推出了一套。以前JS原生的集合类型数据结构,只有Array(数组)和Object(对象);——迭代器(Iterator)。
2025-01-08 13:15:34
285
原创 js观察者模式
它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。当主题对象发生变化时,它的所有观察者都会收到通知并自动更新。
2025-01-08 13:13:01
431
原创 js装饰器模式
装饰器模式是一种结构型设计模式,它允许你在不改变对象结构的情况下,动态地给对象添加新的行为或职责。装饰器模式通过创建一个装饰器类,来包装原始对象,并在不改变原始对象的基础上,为其添加新的功能。装饰器类和原始对象实现相同的接口,因此可以互相替换。优点是可以在不改变原始对象的情况下,动态地添加新的功能,从而提高代码的灵活性和可维护性。同时,装饰器模式也可以避免在原始对象中添加过多的功能,从而提高代码的可读性和可维护性。缺点是会增加代码的复杂性,并且可能会影响代码的性能。
2025-01-08 13:11:29
463
原创 js原型模式
在 JavaScript 中,原型模式主要通过原型链实现每个对象都有一个原型对象proto,它可以通过__proto__属性或方法来访问。原型对象本身也是一个对象,它可以有自己的属性和方法当一个对象访问一个属性或方法时,JavaScript 会首先在该对象本身查找,如果找不到,则会沿着原型链向上查找,直到找到该属性或方法为止。如果在原型链的顶端仍然找不到该属性或方法,则返回undefined。
2025-01-08 13:08:37
287
原创 js高阶-ES6
const 常用于声明常量,其值不能修改,但是如果传递的是引用类型,引用对象内部属性可以修改。* 上层作用域是块级作用域{},因此会找到let声明的i,此时i的值为每一次i的值。let /const 不会在window上添加属性,那么变量是保存在哪里呢?* why:点击触发函数,当前作用域没有i,向上层作用域寻找,在用法上,var和let 的用法类似,用于定义变量。,代码中的函数与变量声明会作为环境记录添加到VE中。点击触发函数,在当前函数作用域中不存在i,在代码编译期间,变量与函数的声明会存放在。
2024-12-29 10:26:46
1194
原创 回流重绘优化
对 DOM 的修改引发了 DOM 几何尺寸的变化(比如修改元素的宽、高或隐藏元素等)时,浏览器需要重新计算元素的几何属性(其他元素的几何属性和位置也会因此受到影响),然后再将计算的结果绘制出来。这个过程就是回流(也叫重排)。触发布局->绘制:当我们对 DOM 的修改导致了样式的变化、却并未影响其几何属性(比如修改了颜色或背景色)时,浏览器不需重新计算元素的几何属性、直接为该元素绘制新的样式。这个过程叫做重绘。触发绘制。
2024-12-28 17:11:13
382
原创 浏览器渲染优化
目前市面上常见的浏览器内核可以分为这四种:Trident(IE)、Gecko(火狐)、Blink(Chrome、Opera)、Webkit(Safari)。具有与一般情况下分为与js引擎。
2024-12-28 17:07:42
579
原创 浏览器本地存储优化
存储状态存储在浏览器端的文本文件,附着在http请求中同一域名下的所有请求都会携带cookie但是只请求图片等资源不需要cookie的信息,但是还会携带cookie,开销大上限4kB以前除了存储状态,还承担了本地存储的责任。
2024-12-28 14:50:03
159
原创 浏览器缓存优化
是一个时间戳,服务器返回响应,响应头中会有expires字段,存放过期时间,然后浏览器再次发起请求,会先比较本地时间和expires中的过期时间,小于则取缓存,但是服务器和客户端可能。是相对的时间长度,客户端记录请求到资源的时间点作为开始时间,再次发起请求,比较开始时间与当前时间,保证两个时间都来自客户端,规避时差问题。本地资源过期,浏览器向服务器询问缓存信息,如果服务器返回304,则代表缓存资源没有发生改动,浏览器可以继续使用本地资源。base64 可以被放进缓存,较小的js,css,图片也可以。
2024-12-28 14:48:52
1144
原创 js高阶-async与事件循环
Promise的then回调,queueMicroTask,Mutation Api等。setTimeOut,ajax,UI Rendering,Dom监听等。会暂停async函数的执行,等待promise状态改变。为空的时候会检测事件队列,从中取任务执行。await 后面跟promise对象,js是单线程的,同一时间只能做一件事情。事件队列,分为宏任务队列与微任务队列。处理完后将异步任务放入。
2024-12-25 16:21:55
400
原创 js高阶-迭代器与生成器
主要用于线性,可顺序遍历的的数据结构,例如 数组,字符串,set,map。特殊的迭代器对象,除了next,还有return,throw方法。class定义类,使得这个类创建的对象成为可迭代对象。可以使用展开语法以及解构赋值, 因为es+新增的。String,Array,Map,Set等。,说明当前执行完毕,可以返回内容。,说明开始执行,可以传入参数了。先返回内容,再传递内容。
2024-12-25 15:39:46
484
原创 一个简易的响应式系统
函数中使用设置了document.body.innerText的值,而全局其他地方也能设置这个值,因此这个函数的执行会间接影响其他地方,便产生了副作用。
2024-11-18 17:36:33
384
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人