分类: 前端

一入Web深似海

32 篇文章

【JavaScript】手写深拷贝
要点: 递归 判断类型 检查环 不拷贝原型上的属性 const deepClone = (a, cache) => { if(!cache){ cache = new Map() // 缓存不能全局,最好临时创建并递归传递 } if(a instanceof Object) { // 不考虑跨 iframe if(cache.get(a)) …
【JavaScript】手写 Promise.all
要点: 知道要在 Promise 上写而不是在原型上写 知道 all 的参数(Promise 数组)和返回值(新 Promise 对象) 知道用数组来记录结果 知道只要有一个 reject 就整体 reject Promise.prototype.myAll Promise.myAll = function(list){ const results…
【JavaScript】手写AJAX
//什么是Ajax? async JavaScript and XML(JSON) let xhr = new XMLHttpRequest(); xhr.open('GET','/requestHttpDemo'); // xhr.onload = () => { // console.log(�…
【JavaScript】手写防抖
// 概念:回城被打断 let debounce = (fn, time, asThis) => { let timer = null; return (...args) => { if (timer) { clearTimeout(timer) } timer = setTimeout(() => { fn.call(asThi…
【JavaScript】手写节流
// 概念:触发CD let debounce = (fn, time, asThis) => { let cooldown = false; let timer = null; return (...args) => { if (cooldown) { return; } fn.call(asThis, ...args) cooldo…
JavaScript浮点数运算的精度问题
问题描述 在 JavaScript 中整数和浮点数都属于Number`数据类型,所有数字都是以 64 位浮点数形式储存,即便整数也是如此。 所以我们在打印 `1.00` 这样的浮点数的结果是 `1` 而非 `1.00 。在一些特殊的数值表示中,例如金额,这样看上去有点变扭,但是至少值是正确了。然而要命的是,当浮点数做数学运算的时候,你经常会发现一些…
React字符串转义DOM
let dom = value; if (row.documents?.length) { row.documents.map((item) => { dom = dom.replaceAll(item, `<a>${item}</a>`); }); } return <div dangerouslySetInn…
.eslintrc.json配置及规则说明
实际项目中Eslint如下所示: 安装 可以全局安装,也可以在项目下面安装。 如下是在项目中安装示例,只需要在 package.json 中添加如下配置,并进行安装: "eslint": "^4.11.0" 配置 配置方式有两种,但建议使用文件配置的形式,比较独立,便于维护。 使用文件配置的方式:在项目的根目…