Skip to content

🔍 作用域(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 用户一定是用户

⭐ 核心特点

子类继承机制:

  • 子类实例会自动获得父类的所有成员(属性和方法)
  • 子类可以扩展自己的特有功能

继承的特性

  1. 单根性 🌳

    • 每个子类只能有一个直接父类
    • 避免多继承带来的复杂性
  2. 传递性 🔄

    • 继承关系具有传递作用
    • 子类不仅继承父类的成员,还会继承祖先类的所有成员

📚 标准库

🔢 数值操作 (Number)

方法/属性描述示例
Number.isNaN()判断是否为 NaNNumber.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()归约计算