arguments 对象在严格/非严格模式下与形参的绑定关系差异 function func(a) { console.log(a === arguments[0]); a = 2; console.log(a === arguments[0]); }; func(1); ┌─────────────────┬─────────────────────┬─────────────────────┐ │ 特性 │ 非严格模式 │ 严格模式 │ ├─────────────────...
参考: https://developer.mozilla.org/zh-CN/docs/Web/CSS/Guides/Display/Block_formatting_context
一、继承性规则概述 CSS中的属性分为可继承属性和不可继承属性两大类。 可继承属性**:子元素会自动继承父元素的属性值 不可继承属性**:需要显式设置,不会自动继承 二、可继承属性 主要是与文本、字体相关的属性,子元素会自动继承: | 属性类别 | 具体属性 | |----------|----------| | 字体 | font-family, font-size, font-weight, font-style, font-variant | | 文本 | color, `line-heigh...
什么是 Symbol? 先看一个问题: 如果你写了一个类,想给类添加一个"私有"属性,防止别人直接用 . 访问,你会怎么做? class User { constructor() { this.name = "张三"; this._password = "123456"; // 下划线约定:这是私有变量 } } const user = new User(); console.log(user._password); // 123456 —— 完全没有隐私! * Symbol 就是来解决这个问题的!* ...
URI(Uniform Resource Identifier,统一资源标识符)是用于标识资源(如网页、文件)和传输协议(如 HTTP、FTP)的字符串。ECMAScript 提供了四个用于编码和解码 URI 的内置函数,以及三个底层抽象操作。 一、编码函数 1.1 encodeURI(uri) 对完整 URI 进行编码,保留 URI 中的保留字符。 特点: 假设保留字符具有特殊含义(如作为分隔符),因此不进行编码 用于编码完整的 URI 保留字符(不编码): ;/?:@&=+$,# encodeURI...
基于 ECMA-262 规范总结,包含核心概念、API 详解和实战应用。 一、Object 概述 1.1 什么是 Object Object 是 JavaScript 中最核心的数据类型: // 创建对象的方式 const obj = {} // 字面量 const obj2 = new Object() // 构造函数 const obj3 = Object.create(null) // 创建无原型对象 1.2 Object 在规范中的地位 Object 是 `%...
一、请求标头 (前端发送) Accept 作用: 告诉服务器客户端能处理什么格式 常用值: application/json - API 请求 text/html - 页面请求 image/webp, image/png - 图片格式偏好 / - 任意格式 实战: // fetch 自动携带 Accept: / // 明确指定 fetch('/api/data', { headers: { 'Accept': 'application/json' } }) Ac...
1. Markdown 流式渲染时高度突变引发的布局偏移 什么是高度突变? 流式输出时,AI 一个字一个字地返回内容,每次新内容到达都需要重新渲染 Markdown。高度突变发生在内容类型发生变化的时刻。 具体场景举例 假设 AI 正在流式输出这段 Markdown: 让我给你展示一个图表: ``chart { "type": "bar", "data": [1, 2, 3] 流式传输过程中,内容可能是这样的: | 时刻 | 内容 | 渲染结果 | 高度 | |------|------|----------...
分片上传原理 大文件的分片和上传的并发策略都由前端主动控制,后端负责接受全部切片后进行合并,并将合并文件的url返回给前端。 1. 文件分片机制 分片上传使用浏览器原生 File.slice() API 将文件分割成多个小块: // 核心实现(来自HaikuDesign packages/ui/src/components/Upload/utils.ts) const splitFileIntoChunks = (file: File, chunkSize: number) => { const chunks = []; ...
观察者模式(Observer Pattern)是一种行为型设计模式,实现了一种类似“订阅”的机制。它包含两个核心角色:观察者(订阅消息、接收通知并执行操作)和被观察者(维护观察者列表、在状态变化时通知所有观察者)。两者通过一对多关系实现解耦:被观察者只负责“通知”,观察者只负责“响应”。 在真实世界中可以类比为:商店老板(被观察者)记录客户(观察者)的需求,当商品到货(状态变化)后,老板通知所有登记过的客户。 在前端中,DOM 事件监听、MutationObserver 等机制也体现了观察者模式的思想。 基本流程(发生了什么) 客户端创建...