跳至主要內容
this

this 是函数运行时的上下文对象,不由定义位置决定,而由调用方式决定。通俗说:谁调用函数,this 就指向谁(箭头函数除外)。

1. this 的指向

函数执行时会在内部创建两个特殊变量:

  • arguments:实参的类数组对象
  • this:当前执行上下文中的 this 绑定
function test() {
  console.log(this);
}

const objA = {
  a: test,
  b: {
    c: test,
  },
};

test();       // window(浏览器)/ global(Node)
objA.a();     // objA
objA.b.c();   // objA.b(只看直接调用者,不看外层对象)

Mr.Ding大约 3 分钟javascriptthiscallapplybind
js 原生小效果

录屏

调用摄像头

选中朗读


Mr.Ding小于 1 分钟javascript
设计模式

设计模式是面向对象开发中可复用的解决方案。JS 中常用创建型、结构型、行为型三类模式;下面结合典型场景与代码说明。

模式分类速览

类型 模式 核心意图
创建型 单例、工厂、构造函数、原型 控制对象创建方式
结构型 代理、装饰器、适配器、DAO 组织对象组合与访问
行为型 观察者、发布订阅、策略、命令、委托、链式 对象间通信与职责分配
架构 MVC、MVVM 分层组织业务与视图

Mr.Ding大约 16 分钟javascript闭包设计模式单例MVCReactVueTypeScript
面向对象

提示

  • 面向对象注重于抽象事物,面向过程注重于叙述步骤
  • 面向对象逻辑清晰有条理,面向过程在简单场景下更直接。
  • JS 通过函数 + 原型模拟传统 OOP 中的「类」,实现封装、继承、多态。

1. 封装

把数据和方法包装在一起,对外隐藏实现细节。


Mr.Ding大约 7 分钟javascriptObject面向对象原型继承Mixin
JavaScript 杂项

本文整理 JS 中零散但常用的知识点:运算符、类型转换、变量声明、精度、防抖节流、垃圾回收等。this、面向对象、事件循环、设计模式见同目录其他文档。

1. 运算符

空值合并 ?? 与逻辑或 ||

运算符 左侧为假时返回右侧 「假值」范围
?? nullundefined 不含 0''false
|| 所有假值 nullundefined0''falseNaN

Mr.Ding大约 8 分钟javascript垃圾回收变量提升防抖节流运算符
事件循环

JavaScript 是单线程语言,靠事件循环(Event Loop) 调度异步任务,保证页面不卡死。理解事件循环是读懂 Promiseasync/await、性能优化的基础。

1. 进程与线程

概念 说明
进程 程序的一次运行实例,拥有独立内存空间
线程 进程内的执行单元,同一进程内线程共享内存

Mr.Ding大约 9 分钟javascript事件循环微任务宏任务异步MutationObserver