🌈 大自然搬运工 🌈
我们不生产知识,我们只做知识的搬运工,本专栏主要是推荐好的博客,并作些简单总结
NO x ONE
喜欢唱、跳、Rap、篮球,但不喜欢写代码的码农
展开
-
instanceof实现
instanceof机制原创 2022-06-28 21:07:34 · 211 阅读 · 0 评论 -
call、apply、bind实现
思路:实现:2.apply实现思路:实现:3.bind实现实现:原创 2022-06-28 20:38:49 · 214 阅读 · 0 评论 -
Iterator和Generator
参考一:迭代器与生成器参考二:Iterator 和 for…of 循环(阮一峰ES6)Iterator即迭代器,它定义了对象的遍历机制iterator有一个方法,在遍历时会调用,这会返回一个结果:,value为本轮遍历拿到的值,done为标志是否遍历结束,从而控制遍历操作如何定义一个对象的迭代器也很简单,为其定义迭代器方法从中返回一个迭代器对象即可,因为每次遍历开始前都会先通过这个方法获取Iterator之后才开始迭代不多bb,来看代码:定义了Iterator后便可以通过来进行遍历,其遍历过程抽象化原创 2022-06-26 16:28:21 · 267 阅读 · 0 评论 -
JS内存管理与垃圾回收机制
参考一:深入理解Chrome V8垃圾回收机制参考二:内存管理参考三:「硬核JS」你真的了解垃圾回收机制吗1.内存生命周期 => => 在JS语言中,内存分配是由JS引擎自动完成的,释放内存也是如此,由JS引擎根据垃圾回收机制进行回收,开发者能参与的是内存读写这一环节2.两种内存存储类型:内存是的,其值存储在空间中:内存是的,其值存储在空间中,指向堆空间中的对象的存储在栈空间中不多bb,来看代码:垃圾回收机制1.核心原理定期找出不再用到的内存,然后释放,至于如何实现有不同的策略,常见的有和1.原创 2022-06-25 15:54:14 · 1106 阅读 · 0 评论 -
柯里化函数
参考一:柯里化柯里化是一种转换,将 转换为可以被以 或 的形式进行调用。JavaScript 实现通常都保持该函数可以被正常调用,并且如果参数数量不足,则返回偏函数原创 2022-06-23 15:56:05 · 136 阅读 · 0 评论 -
节流与防抖
参考一:函数防抖与节流参考二:浅谈js防抖与节流防抖(debounce):在第一次触发事件时,不立即执行函数,而是给出一个。若在延迟时间内,不再触发事件那么执行函数;若在延迟时间内再次触发事件,那么以最后一次触发的时机重新计算延迟时间再执行函数。其实从名字也可以看出来,这个技术的出现就是解决用户的情况(#…#)实现如下:wait!!! 这里防抖虽然是防抖了,但是给用户的感觉是有500ms的延迟,所以我想做个优化,让它第一次就开始执行了,且上次执行完毕后又可以立即执行,即用户手抖开始前立刻执行函数,用户手原创 2022-06-23 11:00:06 · 239 阅读 · 0 评论 -
事件循环机制
参考一:并发模型与事件循环参考二:这一次,彻底弄懂JS执行机制js是单线程的,但是执行时会分为和任务在任务入执行栈时,会将异步任务推入,同步任务放入主线程中执行,待主线程空了之后再回头去按顺序执行任务队列里的异步任务,如此循环除了同步和异步任务,还可以更精细化可分为和,常见的宏任务和微任务如下:队列里面有宏任务和微任务,浏览器每次事件循环都会执行一个宏任务,和该宏任务下的所有微任务。遇到定时器等异步会放到异步队列执行,然后再将结果放到任务队列。这样一直运行,只到执行栈为空和队列为空........原创 2022-06-22 14:25:07 · 140 阅读 · 0 评论 -
Promise实现
参考一:从一道让我失眠的 Promise 面试题开始,深入分析 Promise 实现细节参考二:Promises/A+规范(中文翻译)不多bb直接上代码原创 2022-06-21 14:57:36 · 110 阅读 · 0 评论 -
Reflect和Proxy结合实现响应式
参考一参考二是一个内置的对象,它提供拦截 JavaScript 操作的方法。他可以与结合使用以实现和类似的功能,且性能更好,Vue3正在考虑用此替换之前的方案实现响应式使用Reflect和Proxy实现响应式Vue3之所以要使用代替原先的,原因在于:1.无需再一层层递归observe,性能更好,代码易读性加强2.使用Reflect无需再区别对待Object和ArrayReflect其他用法:............原创 2022-06-20 10:45:52 · 158 阅读 · 0 评论 -
JS模块化
参考一:【深度全面】前端JavaScript模块化规范进化论模块化规范有、、、,前面两者随着ES6模块化规范的出现,浏览器已经可以原生支持模块化,故逐渐被抛弃了,现在主流的服务器端node使用,客户端使用AMD即Async Module Define,异步模块定义,采用的是异步加载模块的方式,它的具体实现是这个库CMDCMD即Common Module Define,是实现CMD规范的一个库CommonJSCommonJS主要用于服务器端,原生实现,无需引入其他库ESModule是ES6推原创 2022-06-19 22:20:49 · 80 阅读 · 0 评论 -
ES6中新增的class
ES6新增Class原创 2022-06-19 18:53:32 · 203 阅读 · 0 评论 -
new深入理解
参考一:JS的new到底是干什么的?参考二:new的模拟实现总结:1.new会执行当前的构造函数,并且加入一些语法糖操作: 将this指向新创建的obj,obj.__proto__指向构造函数的prototype,开始指向构造函数里面的代码,若构造函数没有return一个对象则return 这个obj实现如下:......原创 2022-06-19 15:52:49 · 92 阅读 · 0 评论 -
JS变量提升和函数提升
参考博客总结:1.所谓的并不会移动代码,并不是真正意义上的“提升”,而是js引擎解释执行代码过程所带来的“特性”2.V8引擎在解释执行js代码分为三个过程: => => 3.在生成AST抽象语法树时,会经历和4.会将当前作用域中使用到的所有变量和函数声明提前添加到这个内存空间,对于声明的变量初始值为,对于声明的函数初始值为函数对象(优先级>)5.赋值语句在生成机器码阶段即真正在执行代码的时候才会进行6.、声明其实也会在词法分析阶段将变量提前添加到词法环境中,但是不会,在赋值操作之前调用变量会报错,即存在原创 2022-06-19 15:21:44 · 149 阅读 · 0 评论 -
JS作用域
词法作用域和动态作用域总结:1.js采用的作用域是静态的,即函数作用域在函数定义时就已确定2.动态作用域是指函数作用域在调用时才确定原创 2022-06-19 14:51:11 · 76 阅读 · 0 评论 -
JS类型转换
JS类型转换上JS类型转换下原创 2022-06-18 22:28:58 · 136 阅读 · 0 评论 -
JS类型判断
JS类型判断上JS类型判断下原创 2022-06-18 20:51:00 · 76 阅读 · 0 评论