面试手撕代码
面试题
zjLOVEcyj
composing code was a kind of art
展开
-
ajax请求出错自动重发
【代码】ajax请求出错自动重发。原创 2022-09-18 15:05:01 · 627 阅读 · 0 评论 -
js深度冻结一个对象
【代码】js深度东西冻结一个对象。原创 2022-09-15 15:32:15 · 289 阅读 · 0 评论 -
多维度数组拉平到一维
第二个参数是多维数组的维度,可以设置为Infinity,可以对无限多维度数组拉平, 设置为2时,代表将arr拉平2层。譬如arr = [ 1, [ 2, 3 ], [4, [ 5, [ 6 ] ] ] ]那么arr.flat(2) 就是[ 1, 2, 3, 4, 5, [ 6 ] ]多维度数组拉平到一维。...原创 2022-08-08 00:37:44 · 220 阅读 · 0 评论 -
手写简易版vuex
代码】手写简易版vuex。原创 2022-08-06 00:15:22 · 96 阅读 · 0 评论 -
vue响应式原理模拟实现
vue响应式原理原创 2022-07-01 16:02:22 · 120 阅读 · 0 评论 -
手写实现简易版前端history路由和hash路由
history路由<!DOCTYPE html><html lang="zh-CN"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title&g原创 2022-05-22 15:53:11 · 310 阅读 · 0 评论 -
JS手写bind()和apply()实现
function sum (a, b, c) { console.log(this) return a + b + c}// 把bind挂在函数对象的构造函数的原型对象上面Function.prototype.newBind = function (context) { // 首先获取到当前上下文,即原函数 const _this = this // 获取到要修改的上下文this const newThis = context // 返回一个函数 return fun原创 2022-05-02 13:45:29 · 402 阅读 · 0 评论 -
柯里化实现函数连续调用计算累加和
function curry(...args) { let parmas = args function sum() { parmas = [...parmas, ...arguments] return sum } sum.toString = function () { return parmas.reduce((prev, cur) => { return prev + cur }) } return sum}consol原创 2022-04-10 09:32:22 · 311 阅读 · 0 评论 -
并发优化请求
// 并发优化10个请求,同时最多只能执行3个// 输入:promise数组,limit参数// 存储 reqPool - 并发池// 思路:塞入 + 执行function qpsLimit (requestPipe, limitMax=3) { let reqPool = [] // 往并发池里塞入请求 const add = () => { let req = requestPipe.shift() reqPool.push(req) } // 执原创 2022-04-08 10:29:18 · 434 阅读 · 0 评论 -
JS封装ajax请求
function ajax (options) { const { url, method, async, data, timetout } = options const xhr = new XMLHttpRequest() if (timetout) { xhr.timeout = timetout } return Promise((resolve, reject) => { // 成功 xhr.onr原创 2022-04-07 16:01:17 · 384 阅读 · 0 评论 -
JS手写兼容性事件绑定
class bindEvent { constructor (element) { this.element = element } // 绑定 addEventListener (type, handler) { if (this.element.addEventListener) { this.element.addEventListener(type, handler, false) } else if (this.element.attachEve原创 2022-04-07 14:52:39 · 120 阅读 · 0 评论 -
js实现快排
const fast_sort = (nums) => { if (nums.length === 0) { return [] } else { let first = nums[0] let left = [] let right = [] nums.forEach((item, index) => { if (index > 0) { if (item >= first) { rig原创 2022-03-28 18:15:02 · 94 阅读 · 0 评论 -
js实现简易版Promise
const PENDING = 'pending'const FULIFILLED = 'fulfilled'const REJECTED = 'rejected'class MyPromise { constructor (executor) { this.status = PENDING this.value = undefined this.reason = undefined this.onFulfilledCallbacks = [] this.原创 2022-03-30 10:58:30 · 158 阅读 · 0 评论 -
js防抖与节流
防抖<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Docume.原创 2022-04-05 16:05:40 · 64 阅读 · 0 评论 -
js深拷贝
var obj = { id: 1, name: 'zhaoji', msg: { age: 18 }, color: ['pink', 'red']}var o = {}function deepCopy (newObj, oldObj) { for (let k in oldObj) { // 判断属性值属于哪种数据类型 let value = oldObj[k] // 如果是数组则将该属性赋值一个空数组并进行递归拷贝 if (v原创 2022-04-05 17:57:40 · 221 阅读 · 0 评论