
面试准备-js手写代码
菥菥爱嘻嘻
让自己快乐快乐这才叫做意义
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
手写prmise解析
本文详细讲解了如何手写实现Promise类,包括其核心功能:状态管理、构造函数初始化、resolve/reject方法、then方法链式调用以及静态方法all和race的实现。重点解析了Promise的三种状态转换机制、异步回调处理、错误捕获和链式调用原理。通过setTimeout模拟微任务队列,完整实现了Promise的基本功能,包括并发控制的all方法和竞速执行的race方法。该实现遵循Promise/A+规范,可作为理解原生Promise内部机制的参考。原创 2025-07-21 16:14:10 · 713 阅读 · 0 评论 -
js手写代码篇--手写Object.assign
Object.assign方法用于将多个源对象的可枚举属性复制到目标对象,返回目标对象。因为之前做的浅拷贝有这个函数,写的时候觉得和浅拷贝差不多,最开始没有对target继续宁类型判断只有7分,后面就添加了一个判断。总的思路其实就是遍历传来的参数,遍历参数的属性,添加属性到目标数组就可以了。原创 2025-06-17 17:48:55 · 204 阅读 · 0 评论 -
JS手写代码篇---手写深拷贝
今天学习了深拷贝函数的实现,其实深拷贝与浅拷贝最大的不同就是对于嵌套的对象,浅拷贝是直接复制引用,这样的话修改值也会修改原来的值,这就不算是真正的复制了。深拷贝新建了有个对象,这样的话新建的和之前的就是独立的了,做法就是在浅拷贝的基础上面对于嵌套的都西昂进行递归!原创 2025-06-11 18:58:10 · 197 阅读 · 0 评论 -
JS手写代码篇---手写浅拷贝
今天手写了浅拷贝,浅拷贝很简单,就是对浅层的复制,遍历循环判断自身属性就可以了,随之而来的是如果对象的属性是嵌套对象,浅拷贝只会复制引用,而不是新对象。原创 2025-06-10 17:32:33 · 361 阅读 · 0 评论 -
JS手写代码篇----使用Promise封装AJAX请求
Promise封装AJAX请求,和上面的封装ajax大部分相同,就是多了promise自带的resolve和reject函数,这样就不用写成功和失败的回调函数啦!原创 2025-06-09 19:49:50 · 314 阅读 · 0 评论 -
JS手写代码篇---手写ajax
AJAX请求允许网页异步获取服务器数据而不刷新整个页面。实现步骤包括:创建XMLHttpRequest对象,设置超时和回调函数,监听请求状态,处理网络/超时错误,设置请求头和响应类型后发送请求。示例代码展示了完整的AJAX实现流程:定义成功/失败回调,检查HTTP状态码,处理响应数据或错误信息。该方法通过异步通信提升了用户体验,避免了页面重载。原创 2025-06-08 22:42:45 · 466 阅读 · 0 评论 -
JS手写代码篇---手写函数柯里化
函数柯里化是将多参数函数转换为单参数链式调用的技术,我写的存在参数收集不完整、逻辑复杂等问题,后面进行了改进判断参数数量决定执行函数或继续收集参数,符合柯里化的通用实现。主要问题包括结构复杂、参数收集不完整、递归使用不当等。改进后的方案通过apply合并参数,实现了更优雅的链式调用。原创 2025-06-06 18:51:27 · 286 阅读 · 0 评论 -
JS手写代码篇---bind手写
今天手写了bind,通过前两天的手写call和apply对于改变this指向我已经是很熟悉了,唯一不同的就是bind返回一个新的函数,函数也是要执行参数的,这一点没有太注意。原创 2025-06-05 15:44:37 · 215 阅读 · 0 评论 -
JS手写代码篇---手写apply方法
apply方法允许调用函数时设置this值并以数组形式传递参数,与call方法的主要区别在于参数传递方式。手写实现时需要注意三点:1)验证调用对象是否为函数;2)处理this值为null或undefined的情况;3)对参数数组进行特殊处理,当参数为null/undefined时需单独处理。文中还对比了手写apply和call的区别,指出apply必须对参数数组进行判断,而call则不需要。原创 2025-06-04 16:52:28 · 892 阅读 · 0 评论 -
JS手写代码篇---手写call函数
今天主要手写了call方法:改变函数的 this 指向并立即执行该函数大概思路就是:通过将函数作为对象的方法调用来改变 this 指向手写代码最麻烦的就是有很多的边界需要考虑:- 检查调用者是否为函数- 处理 null/undefined 上下文的情况- 确保不污染传入的对象原创 2025-06-03 17:13:54 · 273 阅读 · 0 评论 -
JS手写代码篇---手写节流函数
节流函数是一种性能优化技术,它控制函数在指定时间间隔内只能执行一次。与防抖函数延迟执行不同,节流函数直接限制执行频率。示例代码通过记录上一次执行时间,确保在等待时间内不再重复执行。适用于滚动事件等高频触发的场景。防抖则更适合如搜索输入框等需要等待用户停止输入的场景。原创 2025-05-30 22:51:39 · 637 阅读 · 0 评论 -
JS手写代码篇---手写防抖函数
今天手写了防抖函数,很喜欢上电梯这个例子,会让整个代码变得通俗易懂原创 2025-05-29 11:29:09 · 208 阅读 · 0 评论 -
JS手写代码篇---Pomise.race
今天学习了手写promise.race,和promise.all嘴不停的就是他是只要有应该promise结束就要返回了,所以和all也有很大的不一样。哦哦哦~学到了一个小tips,Promise.resolve可以将每个元素转换为Promise,以处理非Promise的情况。原创 2025-05-28 15:47:49 · 653 阅读 · 0 评论 -
JS手写代码篇---手写promise.all
promise.all方法主要是处理多个异步的调用问题,传入一个数组,返回的是新的promise对象,它是静态方式。所以传入数组后我们循环遍历了这个数组,如果它是普通值,如果是就要直接添加到结果数组里卖弄,如果不是,then等待结果,只要有一个错误,那么就直接reject,最后当结果数组的长度和传入数组的长度相同的时候就要resolve啦~~原创 2025-05-27 23:01:13 · 392 阅读 · 0 评论 -
JS手写代码篇---手写Promise
手写 Promise 的核心在于实现状态管理、异步回调和链式调用。首先,Promise 有三种状态(pending/fulfilled/rejected),通过构造函数接收执行器函数,并用 `resolve` 和 `reject` 更新状态。原创 2025-05-21 20:50:09 · 866 阅读 · 0 评论 -
JS手写代码篇---手写 new 操作符
new的手写主要通过它实现的四个步骤进行一一实现,创建一个原型被设置为构造函数的 prototype 属性的对象,改变this的指向,判断新对象的类型最后进行对应的处理。原创 2025-05-17 17:41:27 · 417 阅读 · 0 评论 -
JS手写代码篇---手写 instanceof 方法
instancecof用于检测一个对象是否是某个构造函数的实例。它通常用于检查对象的类型,尤其是在处理继承关系时。这种原型链机制是 JavaScript 继承和原型继承的基础。通过原型链,JavaScript 实现了对象的属性和方法的继承。这就让我想到本道题木的解题思路:在函数当中我们输入目标和待测类型,进行循环,如果原型链上有待测类型的原型返回true,没有也就是当了原型链的终点null,返回false原创 2025-05-16 21:16:35 · 239 阅读 · 0 评论 -
JS手写代码篇---手写 Object.create
在手写代码时,理解代码的作用和实现效果是关键。以手写 Object.create 为例,其核心思路是创建一个新对象,并将传入的对象作为其原型。通过定义一个构造函数 F,将其原型设置为传入的对象 obj,然后返回 F 的实例,即可实现类似 Object.create 的功能。测试结果表明,手写的 create 函数与原生 Object.create 方法效果一致,成功创建了以 person 为原型的新对象 child1。原创 2025-05-15 18:07:51 · 268 阅读 · 0 评论