# js-code **Repository Path**: yanhsama/js-code ## Basic Information - **Project Name**: js-code - **Description**: 日常手撸代码痕迹 事件循环 this指向 原型与原型链 作用域 执行上下文 promise es6+ 排序算法 与设计模式 DOM、CSS React - **Primary Language**: JavaScript - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-02-17 - **Last Updated**: 2026-01-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 计划 ## 事件循环(Event Loop) 宏任务 (macro task) 宏任务 是指在浏览器环境中,每次事件循环(Event Loop)执行时,从任务队列(Task Queue)中取出的任务。 微任务 (micro task) 微任务 是指在浏览器环境中,每次事件循环(Event Loop)执行时,从微任务队列(Microtask Queue)中取出的任务。 ## 排序算法 数据结构 稳定排序 是指在排序过程中,相等的元素的相对顺序不会改变。\ 不稳定排序 是指在排序过程中,相等的元素的相对顺序可能会改变。 例如,在插入排序中,相等的元素会保持它们的相对顺序,因此插入排序是稳定的。 - 插入排序 - 归并排序 - 冒泡排序 - 桶排序 - 计数排序 例如,在快速排序中,相等的元素的相对顺序可能会改变,因此快速排序是不稳定的。 - 快速排序 - 堆排序 - 选择排序 ```text 1. 归并排序(Merge Sort) 核心思想:分而治之,先"分"后"合" 分:将数组递归地分割为两半,直到子数组长度为1 治:将已排序的子数组合并,形成更大的有序数组 关键操作:合并两个有序数组 2. 快速排序(Quick Sort) 核心思想:分而治之,先"分"后"治" 分:选择一个基准值(pivot),将数组分割为小于基准值和大于基准值的两部分 治:对分割后的两部分递归地应用快速排序 关键操作:分区(partition)操作 ``` ## 正则表达式 /\s+/g 匹配所有空格 /[a-zA-Z0-9]+/g 匹配所有字母和数字 /[a-zA-Z0-9_]+/g 匹配所有字母、数字和下划线 /\w+/g 匹配所有字母、数字和下划线 /\b\w+\b/g 匹配所有单词 regexp 是 JavaScript 提供的一个对象,用于操作正则表达式。 ## Proxy 与 Reflect Proxy 是 JavaScript 提供的一个 API,用于创建一个代理对象,用于拦截对目标对象的操作。 Reflect 是 JavaScript 提供的一个 API,用于操作对象的默认行为。 - Proxy.create() 是一个方法,用于创建一个代理对象。 - new Proxy(target, handler) 是一个构造函数,用于创建一个代理对象。 - handler 是一个对象,用于定义代理对象的行为。 handler 有以下几个方法: - handler.get() 是一个方法,用于拦截对代理对象属性的读取操作。 - handler.set() 是一个方法,用于拦截对代理对象属性的赋值操作。 - handler.has() 是一个方法,用于拦截对代理对象属性的 in 操作。 - handler.deleteProperty() 是一个方法,用于拦截对代理对象属性的 delete 操作。 - handler.ownKeys() 是一个方法,用于拦截对代理对象属性的遍历操作。 - handler.apply() 是一个方法,用于拦截对代理对象函数的调用操作。 - handler.construct() 是一个方法,用于拦截对代理对象的 new 操作。 - handler.defineProperty() 是一个方法,用于拦截对代理对象属性的定义操作。 - handler.constructor() 是一个方法,用于拦截对代理对象的 new 操作。 ## Object Object 是 JavaScript 提供的一个对象,用于操作对象的默认行为。 - Object.keys() 是一个方法,用于返回一个对象的所有可枚举属性的数组。 -Object.values() 是一个方法,用于返回一个对象的所有可枚举属性的值的数组。 - Object.entries() 是一个方法,用于返回一个对象的所有可枚举属性的键值对数组。 Object.assign() 是一个方法,用于将一个或多个源对象的可枚举属性复制到目标对象中。 - Object.create() 是一个方法,用于创建一个新对象,新对象的原型指向指定的对象。 - Object.defineProperty() 是一个方法,用于定义一个对象的属性。 - Object.defineProperties() 是一个方法,用于定义一个对象的多个属性。 - Object.getOwnPropertyNames() 是一个方法,用于返回一个对象的所有属性的数组,包括不可枚举属性。 - Object.getOwnPropertySymbols() 是一个方法,用于返回一个对象的所有 Symbol 属性的数组。 - Object.getPrototypeOf() 是一个方法,用于返回一个对象的原型对象。 - Object.setPrototypeOf() 是一个方法,用于设置一个对象的原型对象。 - Object.is() 是一个方法,用于判断两个值是否相等。 - Object.isExtensible() 是一个方法,用于判断一个对象是否可扩展。 - Object.isSealed() 是一个方法,用于判断一个对象是否被密封。 - Object.isFrozen() 是一个方法,用于判断一个对象是否被冻结。 - Object.seal() 是一个方法,用于密封一个对象,防止添加新属性和删除已有的属性。 - Object.freeze() 是一个方法,用于冻结一个对象,防止修改已有的属性值。 - Object.preventExtensions() 是一个方法,用于防止一个对象添加新属性。 ## js 相关 作用域 闭包 执行上下文 原型与原型链 this指向 ## 手写代码 防抖与节流 ## CSS CSSModules 是一种 CSS 模块化的方案,用于解决全局样式冲突的问题。\ CSS IN JS 是一种将 CSS 代码写在 JavaScript 文件中的方案,用于解决全局样式冲突的问题。 flex 布局 \ grid 布局