-
AJAX是浏览器原生能力组合,本质为XMLHttpRequest或fetch异步通信;“无刷新”指局部DOM更新而非整页重载;fetch推荐但需手动判response.ok、注意cookie与JSON解析;XMLHttpRequest仍适用于进度监听等场景;须防卡顿、XSS、竞态等问题。
-
JavaScript拖放功能核心是监听mousedown、mousemove、mouseup三事件:mousedown记录偏移并绑定事件,mousemove实时更新位置,mouseup解绑并清理状态,需preventDefault防默认行为,推荐动态绑定/解绑避免全局污染。
-
盒模型由content、padding、border、margin四层构成,width仅指内容宽;默认content-box下总宽=width+padding×2+border×2,border-box可使width包含padding和border。
-
JIT编译是运行时将热点代码转为优化机器码的技术:先解释执行,再监控标记热点,接着编译优化,最后去优化保障正确性;它通过消除重复解析、利用运行时类型信息、函数内联、内存直接寻址等提升性能。
-
HTML文件双击打开无法隐藏地址栏,因现代浏览器已废弃window.open的location=no等参数;Electron/Tauri是唯一可靠方案,需打包为可执行文件。
-
本文介绍如何通过点击按钮依次展示JSON数组中每个对象的数据,利用索引控制、事件监听与循环翻页逻辑实现平滑切换。
-
ShadowDOM是WebComponents的核心技术,提供独立DOM环境实现样式、结构和行为的封装;通过attachShadow创建影子树,挂载到宿主元素上,支持open(可访问)和closed(不可访问)模式;其核心优势为样式隔离,内部CSS不影响外部,外部样式默认不穿透,可通过CSS变量传递主题;利用slot可实现LightDOM内容投影,支持具名插槽进行布局分发;尽管closed模式可增强封装,但仍存在绕过风险,主要用于逻辑隔离;整体上ShadowDOM有效避免全局污染,提升组件复用性与健壮性,
-
使用text-overflow、white-space和overflow属性可实现响应式单行文本溢出省略。具体为设置white-space:nowrap防止换行,overflow:hidden隐藏溢出内容,text-overflow:ellipsis显示省略号,需配合固定或响应式宽度。该方案适用于标题等场景,结合flex或grid布局可自适应不同屏幕尺寸。注意必须限定容器宽度并确保overflow:hidden生效,否则省略号不显示;多行省略需借助-webkit-line-clamp。现代浏览器及IE8+
-
flex子项宽度被百分比干扰的典型表现是渲染偏差、缩放错位和跨浏览器不一致,根本原因在于width与flex-basis隐式冲突导致两次计算叠加。
-
JavaScript媒体查询主要通过window.matchMedia()实现,可精准监听屏幕尺寸、横竖屏、配色方案等变化并触发回调,比resize事件更轻量高效。
-
JavaScript装饰器元数据是通过装饰器函数为类、方法等添加可在运行时读取的额外信息。1.装饰器作为语法糖,在代码声明时插入逻辑,附加元数据;2.ReflectMetadata提案提供defineMetadata/getMetadata等API,结合TypeScript的emitDecoratorMetadata实现类型反射,广泛用于DI、ORM、路由等场景;3.新ES装饰器提案(Stage3)通过context对象提供更灵活的初始化和修改能力,但不内置统一元数据存储,需借助WeakMap等自行管理;
-
Object.getPrototypeOf用于获取对象的原型。1.查看对象原型:console.log(Object.getPrototypeOf({}))返回Object.prototype。2.检查继承关系:console.log(Object.getPrototypeOf(Object.create({foo:'bar'}))==={foo:'bar'})返回true。3.遍历原型链:使用递归函数getPrototypeChain(obj)可以查看完整原型链。
-
JavaScriptmock核心是拦截真实请求而非造假对象,分三类:全局重写fetch/XMLHttpRequest(开发调试)、msw基于ServiceWorker(推荐测试+开发)、axiosadapter(仅限axios项目),关键要保持mock与真实接口同步。
-
JavaScript代码压缩通过移除无用字符、简化语法、混淆变量名等减小体积,提升加载速度;核心是不改逻辑前提下使代码更紧凑,依赖Webpack/Vite等构建工具自动启用Terser,在production模式下删除注释空格、缩短名称、tree-shaking、简化表达式;也可手动调用Terser命令行或API压缩;压缩前应清理console/debugger、冗余代码、优化字面量和模块化;服务端需配合Gzip/Brotli压缩,Brotli比Gzip平均再减15%体积。
-
Promise是ES6引入的异步编程标准对象,用于解决回调地狱、错误处理分散及缺乏统一控制等问题;它表示异步操作的三种状态(pending/fulfilled/rejected),通过newPromise()创建,支持.then()/.catch()链式调用与Promise.all/race/finally等组合方法。