js
Alice_124
这个作者很懒,什么都没留下…
展开
-
自己实现一个深拷贝
话不多说,直接上代码 let org = {a: {b: 'b'}, arr: [1,2,3, {s: 's'}]} let res = deepClone(org); function deepClone(obj, hash = new WeakMap()) { if (typeof obj == null) return obj; if (typeof obj !== "object") return obj; if (obj instan原创 2021-08-06 15:33:56 · 196 阅读 · 0 评论 -
遍历器的基本实现
遍历器想必大家都知道,今天自己实现了一个简单的遍历器,欢迎大家一起交流探讨。基本实现const obj = {0: 'a', 1: 'b',2: 'c', length:3};obj[Symbol.iterator] = function () { let index = 0; return { next: () => { return { value: this[index], done: index++ === this.length } } }}原创 2021-04-02 15:10:15 · 226 阅读 · 0 评论 -
手写promise原理
整体内容概述实现Promise构造函数 实现Promise.then方法 实现Promise.catch方法 实现Promise.resolve 实现Promise.reject 实现Promise.all方法 实现Promise.race方法1.实现Promise构造函数在实现promise构造函数前,我们先看一下平时我们是怎样定义一个promise的const P = new Promise((res, rej) => { res('ok')})我们可以看原创 2021-02-19 19:32:15 · 475 阅读 · 1 评论 -
require.context
require.context带表达式的 require 语句如果你的 require参数含有表达式(expressions),会创建一个上下文(context),因为在编译时(compile time)并不清楚具体是哪一个模块被导入require("./template/" + name + ".ejs");复制代码webpack 解析 require() 的调用,提取出来如下这些信息:Directory: ./templateRegular expression: /^.转载 2020-12-16 11:17:56 · 1301 阅读 · 0 评论 -
节流函数与防抖函数
函数节流与函数防抖在日常开发中还是比较常用的。现在总结一下。函数节流每隔一段时间,只执行一次函数。 常见应用场景: 滚动加载、加载更多或滚到底部监听; 谷歌搜索,搜索联想功能; 高频点击提交,表单重复提交等; 实现:定时器实现const throttle = (fn, delay) => { let timer = null; return (...arg) => { if (timer) return; time原创 2020-12-11 13:58:11 · 169 阅读 · 0 评论 -
encodeURI、encodeURIComponent、decodeURI、decodeURIComponent的区别
在项目中遇到了encodeURI、encodeURIComponent、decodeURI、decodeURIComponent。通过一张图自己做下总结,也和大家进行一下分享。原创 2020-12-07 17:52:26 · 133 阅读 · 0 评论 -
js深拷贝
项目中经常会遇到需要深拷贝数据的场景,之前用递归来实现深拷贝 function deepClone(data){ var type = getType(data); var obj; if(type === 'array'){ obj = []; } else if(type === 'object'){ ...原创 2018-08-13 15:16:02 · 228 阅读 · 0 评论 -
js中的遍历和跳出遍历
在项目开发过程中,有的时候我们可能需要跳出我们的循环。本人就趟坑经历总结一下趟坑心得。我们常用到的遍历主要有以下几种1.for循环 const testArray = [1, 2, '3', 'test', 5] for (let i = 0; testArray[i]; i++) { if (+testArray[i] === 2) {...原创 2018-08-28 18:15:58 · 5468 阅读 · 0 评论