Skip to content
call()、apply()、bind() 的使用场景

每个 JavaScript 函数都是一个 Function 对象:(function () {}).constructor === Function 返回 true。

⛪ 深克隆的标准方法 structuredClone 和克隆继承属性

对象类型在内存中存储的是引用和值。所以克隆一个对象存在两种方式:一种是只改变引用在内存中的地址,不改变值的存储空间,叫做浅克隆;一种是改变引用在内存中的地址,并在内存中开辟一个新的区域来存放值,叫做深克隆。

结构化克隆、序列化、可传输对象

结构化克隆是由 HTML5 规范定义的用于复制复杂 JavaScript 对象的算法,例如 structuredClone() 函数的调用,Workers 的 postMessage() 方法或使用 IndexedDB 存储对象时在内部的调用。

如何使用严格模式

严格模式体现了 Javascript 更合理、更安全、更严谨的发展方向,有助于更细致深入地理解 Javascript,让你变成一个更好的程序员。

HTML5 的规则和迁移

HTML5 提供的新元素和新的 API 简化了 web 应用程序的搭建。

使用 Manifest V3 做一个简单 Chrome 页面右键菜单搜索扩展

如果做一些简单的功能,油猴脚本就可以做到;要做一些复杂的带有界面的功能,就需要 Chrome 扩展来做了。

学会使用 requestAnimationFrame

requestAnimationFrame 是由浏览器专门为动画提供的API,用法类似于 setTimeout,但是不需要设置时间间隔。

开发者工具网络面板中的 Request Payload 和 Form Data

Chrome 96 开始,当你想查看网络请求中的 Request Payload 和 Form Data 信息时,可以使用网络面板里面的 Payload(载荷)边栏。

HTML 的页面可见性

页面可见性可以通过让页面在文档不可见时避免执行不必要的任务,从而来节省资源和提高性能。

页面滚动顶部指示进度条 JS 和 CSS 实现

页面滚动顶部指示,是在页面上下滚动时,顶部显示一个滚动条,指示页面的滚动距离和页面的滚动高度的比例。

mouseenter mouseleave mouseover mouseout mousemove 鼠标事件冒泡对比

mouseenter mouseleave 不会冒泡;而 mouseover mouseout 会冒泡,即从自身元素和子元素上之间移动时也会触发。

如何使用 meta 标签

meta 标签的属性定义了与文档相关联的名称/值对,元数据总是以名称/值的形式被成对传递的。

CSS 的 @规则介绍

at 规则以 @ 开始,后跟一个标识符,一直到以分号或右大括号结束。

Windows 系统中的硬链接和软链接

在 Windows 上使用符号链接至少可以说是有问题的,所以 pnpm 在 Windows 上使用连接点链接来代替符号链接。

学会使用 Fetch API

Fetch 是一个用来获取网络资源的 API,与 XMLHttpRequest 功能基本相同,但 Fetch 使用 Promise 处理响应,而不是回调函数。

理解 JavaScript 中的事件循环和并发模型

JavaScript 为什么是单线程?因为 JavaScript 是可操纵 DOM 的,如果两个线程同时操作 DOM,那浏览器就无法保证 DOM 数据的一致性了。

⚓ URI 的编码和解码

一般来说,URL 只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。这意味着,如果 URL 中有汉字,就必须编码后使用。

使用浏览器原生的 <dialog> 元素替换 alert、confirm、prompt 对话框

HTML 5.2 推出了一个新的原生模态对话框元素 dialog。dialog 可以通过 showModal 方法显示和 ::backdrop 伪元素自定义遮罩层(mask)样式。

⛱ HTML 元素的交叉区域检测

Intersection Observer API 用于检测目标元素与祖先元素或 viewport 相交情况变化,它可以自动观察元素是否可见,可见(visible)的本质是,目标元素与视口产生一个交叉区,所以这个 API 叫做交叉观察器。

JSONP、CORS 和 axios 的跨域

CORS(Cross-Origin Resource Sharing,跨域资源共享)是一种基于 HTTP 头的机制,通过新增一组 HTTP 头,来决定网页如何处理跨域请求。