Appearance
🔍 作用域(Scope)
作用域定义了变量和函数的可访问范围,主要分为:
1. 🌍 全局作用域
- 在代码中任何地方都能访问
- 声明在最外层的变量和函数
2. 🔒 函数作用域
- 只在函数内部可以访问
- 遵循词法作用域规则
⚡ 作用域特性
- 内部作用域可以访问外部作用域(作用域链)
- 访问外部作用域时会形成闭包
- 作用域由定义位置决定,与调用位置无关
- 变量和函数声明会提升至作用域顶部
🌐 全局对象(Global Object)
全局对象可以直接访问 给未声明的变量赋值,实际就是给对象的属性赋值 应该使用 IIFE,避免全局污染
js
;(function () {
var a = 1
return {
a
}
})()
🧬 js 中的原型、实例、原型链
🔷 原型 (Prototype)
每个函数都具有一个特殊的属性 prototype
,这就是我们所说的原型对象。它是 JavaScript 实现继承机制的核心。
🎯 实例 (Instance)
在 JavaScript 中,所有对象都是通过构造函数使用 new
关键字创建的。从这个角度来看,每个对象都可以被称为某个构造函数的实例。
⛓️ 原型链
每个实例对象都包含一个特殊的内部属性 __proto__
(隐式原型)。这个属性建立了实例与其构造函数原型之间的连接,形成了原型链的基础。
当读取对象成员时,首先会查看自身是否有该成员,如果没有,就依次在其原型链上查找
👨👦 继承 (Inheritance)
继承是面向对象编程中的一个核心概念,用于描述两个对象类型(类或构造函数)之间的从属关系。
📚 基本概念
通过一个简单的逻辑关系来理解继承:
- 如果 A 是一个更广泛的概念
- 而 B 是 A 的一个特殊形式
- 那么我们可以说:B 继承自 A
例如:
普通用户和 VIP 用户的关系:
- 普通用户不一定是 VIP 用户
- 但 VIP 用户一定是用户
⭐ 核心特点
子类继承机制:
- 子类实例会自动获得父类的所有成员(属性和方法)
- 子类可以扩展自己的特有功能
继承的特性
单根性 🌳
- 每个子类只能有一个直接父类
- 避免多继承带来的复杂性
传递性 🔄
- 继承关系具有传递作用
- 子类不仅继承父类的成员,还会继承祖先类的所有成员
📚 标准库
🔢 数值操作 (Number)
方法/属性 | 描述 | 示例 |
---|---|---|
Number.isNaN() | 判断是否为 NaN | Number.isNaN(NaN) // true |
Number.isInteger() | 判断是否为整数 | Number.isInteger(1) // true |
Number.parseInt() | 转换为整数 | Number.parseInt('123') // 123 |
Number.toFixed() | 保留指定小数位 | (3.1415).toFixed(2) // "3.14" |
Number.toString() | 转换为字符串(可指定进制) | (16).toString(2) // "10000" |
📝 字符串处理 (String)
方法 | 描述 |
---|---|
String.fromCharCode() | Unicode 转字符串 |
indexOf() | 查找子串位置 |
includes() | 判断是否包含子串 |
➗ 数学计算 (Math)
方法/常量 | 描述 | 示例 |
---|---|---|
Math.PI | 圆周率常量 | 3.141592653589793 |
Math.abs() | 绝对值 | Math.abs(-5) // 5 |
Math.ceil() | 向上取整 | Math.ceil(4.3) // 5 |
Math.floor() | 向下取整 | Math.floor(4.7) // 4 |
Math.round() | 四舍五入 | Math.round(4.5) // 5 |
Math.max() | 最大值 | Math.max(1,2,3) // 3 |
Math.min() | 最小值 | Math.min(1,2,3) // 1 |
Math.pow() | 幂运算 | Math.pow(2,3) // 8 |
Math.sqrt() | 平方根 | Math.sqrt(9) // 3 |
Math.random() | 随机数(0-1) | Math.random() // 0.123... |
📅 日期时间 (Date)
方法 | 描述 |
---|---|
getFullYear() | 获取年份 |
getMonth() | 获取月份(0-11) |
getDate() | 获取日期(1-31) |
🎯 对象操作 (Object)
方法 | 描述 |
---|---|
Object.assign() | 合并对象 |
Object.create() | 创建对象 |
Object.keys() | 获取所有属性名 |
Object.values() | 获取所有属性值 |
Object.entries() | 获取所有键值对 |
hasOwnProperty() | 判断自有属性 |
📦 数组操作 (Array)
方法 | 描述 |
---|---|
push() | 末尾添加元素 |
concat() | 合并数组 |
pop() | 删除最后元素 |
shift() | 删除首个元素 |
unshift() | 开头添加元素 |
slice() | 截取数组片段 |
splice() | 删改插操作 |
sort() | 排序 |
map() | 映射新数组 |
reduce() | 归约计算 |