尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
2026前端面试题(六)
防抖const debounce (fn,delay300) { let timer null return function(...args){ clearTimeout(timer) timer setTimeout(()fn.apply(this.args),delay) } }节流const throttle (fn,delay300){ let lock false return function(...args){ if(!lock){ lock true setTimeout((arg){ fn.apply(this.args) lock false },delay) } } }深拷贝const deepClone (obj,map new Weepmap()) { if(obj null || type obj ! object) return obj if(map.has(obj)) return map.get(obj) const target Array.isArray(obj) ? [] : {} map.set(obj,target) Reflect.ownKeys(obj).forEach(key { target[key] deepClone(obj[key],map) }) return target }手写Promise 简易版class MyPromise{ constructor(executor) { this.state pending this.val null this.onFulfiled [] this.onRejected [] const resolve v { if(this.state ! pending) return this.state fulfiled this.val v this.onFulfiled.forEach(fn fn(v)) } const reject e { if(this.state ! pending) return this.state rejected this.val e this.onRejected.forEach(fn fn(e)) } try { executor(resolve, reject)} catch(err) {reject(err)} } then(suc, err) { suc suc || (v v) err err || (e { throw e }) return new MyPromise((res, rej) { const cb fn v setTimeout(() { try { const r fn(v); res(r) } catch (e) { rej(e) } }) if (this.state fulfilled) cb(suc)(this.val) else if (this.state rejected) cb(err)(this.val) else { this.onFulfilled.push(cb(suc)) this.onRejected.push(cb(err)) } }) } }手写bind/call/bind# call Function.prototype.myCall function(ctx, ...args) { ctx ctx || window ctx.fn this const res ctx.fn(...args) delete ctx.fn return res } # apply Function.propotype.myApply function(ctx, args []) { ctx ctx || window ctx.fn this const res ctx.fn(...args) delete ctx.fn return res } # bind(返回新函数) Function prototype.myBind function(ctx, ...args1) { const fn this return function(...args2) { return fn.myCall(ctx, ...args1, ...args2) } }数组去重、flat扁平化# 数组去重new Set function unique(arr){ return [...new Set(arr)] } # flat 扁平化无限层级 function flat(arr){ return arr.reduce((pre,cur) pre.concat(Array.isArray(cur) ? flat(cur) :cur),[]) }new实现const myNew (fn, ...args) { const obj object.create(Fn.prototype) const res Fn.apply(obj, args) return typeof res object res ! null ? res : obj }instanceOfconst myInstanceof (left, right) { let proto Object.getPrototypeOf(left) while(proto) { if(proto right.prototype) return true proto Object.getPrototypeOf(proto) } return false }发布订阅模式class EventBus{ constructor() { this.events {} } on(type, fn){ if(! this.events[type].push(fn)) } emit(type, ...args) { this.events[type]?.forEach(fn fn(...srgs))) } off(type, fn) { if(!this.events[type]) return this.events[type] this.events[type].filter(item item ! fn) } }简易Ajaxfunction ajax({ url, method GET, data }) { return new Promise((res, rej) { const xhr new XMLHttpRequest() let params if (data) params new URLSearchParams(data).toString() let reqUrl url if (method.toUpperCase() GET params) reqUrl ? params xhr.open(method, reqUrl) if (method.toUpperCase() ! GET) { xhr.setRequestHeader(Content-Type, application/x-www-form-urlencoded) } xhr.onload () xhr.status 200 xhr.status 300 ? res(xhr.response) : rej(xhr.statusText) xhr.onerror () rej(请求失败) xhr.send(method.toUpperCase() GET ? null : params) }) }
RELATED

相关推荐

餐饮供应链行业企业获客软件精准拓客方法论:基于客户类型的多维筛选策略

餐饮供应链行业企业获客软件精准拓客方法论:基于客户类型的多维筛选策略

餐饮供应链行业的客户类型涵盖终端餐饮门店、食品加工企业和批发商,各类客户的行业分布和筛选策略存在显著差异。本文构建基于客户类型的三维筛选框架,分析不同产品品类对应的最优行业分类选择和条件组合,为餐饮供应链销售提供精准拓客方法论…

📅 2026/9/22 1:23:38
ABAP 里有没有 RxJS Marble Diagram,真正的差别不在画法,而在时间模型

ABAP 里有没有 RxJS Marble Diagram,真正的差别不在画法,而在时间模型

最近讨论 ABAP 是否存在类似 RxJS 的 Observable、Observer、Hot Observable、Cold Observable 这些概念时,很容易继续追到另一个很有意思的问题,既然 RxJS 能用 Marble diagram 把异步事件画成一条时间轴,那么 ABAP 里有没有类似技术。 这个问题的答案很明确。 截至 2026…

📅 2026/9/22 15:33:07
iPhone USB 网络共享失效?这份 Windows 驱动安装与排错完整指南帮你快速搞定

iPhone USB 网络共享失效?这份 Windows 驱动安装与排错完整指南帮你快速搞定

iPhone USB 网络共享失效?这份 Windows 驱动安装与排错完整指南帮你快速搞定 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https…

📅 2026/10/17 11:19:39
MORE NEWS

更多资讯

📰

分片向量检索的“无损合并”,究竟需要哪些前提

分片结果合并前,先问每个分片返回的是什么。若它返回同一距离定义下的精确Top-K,合并不是近似问题;若分片内部已经漏召回,协调器排得再认真,也只能处理手里那批候选。 原理示意,非真实系统截图或性能测量。…

📰

设备管理台账全指南:字段编号、维护流程与数字化迁移

简介:面向企业设备管理场景的一份标准化台账模板,可帮助设备管理员、行政或资产部门系统记录设备从采购、启用、维护到报废的全生命周期信息。资源为单个doc格式文档,压缩包仅62KB,内容简洁实用,适合直接填写或二次调整…

📰

工业互联网预测性维护:从振动信号到AI模型的技术闭环

简介:面向工业企业设备管理与数字化转型人员,这份PPT围绕AI预测性维护(PDM)给出完整技术方案与落地思路。内容涵盖预防性维护与预测性维护的对比、全球市场规模数据(2024年预计235亿美元)、传感器云端算法平…

📰

EEG睡眠分期的CNN实现:从时频图到轻量模型全流程

简介:本资源是一个面向人工智能与生物医学交叉领域初学者的深度学习实践项目,聚焦于利用EEG信号识别睡眠阶段这一典型时序分类任务。项目基于Python实现,整合CNN与RNN建模思路,覆盖EEG数据预处理、特征提取、模型构建与评估全流程…

📰

自演进模型路由如何将Agent成本压下一半?openJiuwen X-Router实战解析

做 Agent 项目的朋友,大概率都经历过一个阶段:Demo 跑得飞起,一上线账单直接教你做人。我自己就见过一个团队,日活不到一千的 Copilot 产品,一个月的大模型账单飙到六位数。核心原因很直接——Agent 不像普通 API 调用…

📰

美赛数学建模QGIS地图底图与空间分析实战指南

简介:面向数学建模参赛者与地理数据分析学习者的中国地理数据包,聚焦美赛等竞赛中涉及中国空间问题的建模需求。资源共2000个文件,全部为json格式,压缩包约38.67MB,涵盖国家级至县级行政边界及省市区规划信息&#xff…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬