-
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等组合方法。
-
使用transition属性可实现字体大小平滑变化,需设置font-size过渡时间与缓动函数,推荐用rem单位配合cubic-bezier控制曲线,避免布局抖动需固定行高或预留空间,实际应用于导航悬停等场景,使动画自然流畅。
-
使用CSS和JavaScript可实现滚动动画。1.position:sticky让元素滚动时固定位置,适合导航栏;2.结合CSStransition与JavaScript监听scroll事件,元素进入视口时添加类名实现滑入效果;3.使用IntersectionObserverAPI高效检测元素可见性,推荐用于多元素依次动画;4.通过JavaScript实时计算scrollTop并应用transform,可实现视差等复杂动效。性能优化建议:避免频繁DOM操作,优先使用IntersectionObserve
-
JavaScript函数式编程强调纯函数、不可变数据和函数组合,以提升代码可读性、可测性与可维护性;纯函数指输入确定则输出确定且无副作用,如add、capitalize;非纯函数如修改外部变量或发起网络请求;纯函数利于缓存、测试与并行;推荐将计算逻辑写成纯函数,副作用集中处理;函数组合(如compose)可链式拼接小函数,使数据流更清晰。
-
JavaScript原型链是对象查找属性时实际遵循的隐式[[Prototype]]引用路径,从对象开始逐级向上直至null;class继承和ES5手动继承均依赖此机制实现方法共享与实例属性继承。
-
output标签专为表单中动态显示计算结果而设计,必须通过for属性关联input等控件ID才能启用原生自动更新,否则退化为普通内联元素;需显式设置display和宽高以避免布局抖动,JS操作应优先使用value属性而非innerHTML。
-
JavaScript属性描述符是控制属性行为的核心机制,分为数据描述符(含value/writable)和访问器描述符(含get/set),均支持enumerable和configurable;可通过getOwnPropertyDescriptor和defineProperty读写,是封装、校验及响应式系统的基础。