前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
  • 基础进阶

    • 基础篇
    • 进阶篇
    • 高频篇
    • 手写篇
    • 设计模式
      • 一、基础篇
        • this、new、bind、call、apply
        • 闭包与高阶函数
        • ES6
        • 继承与原型链
        • 设计原则
      • 二、创建型模式
        • 单例模式
        • 工厂模式
        • 抽象工厂模式
        • 建造者模式
      • 三、结构型模式
        • 代理模式
        • 享元模式
        • 适配器模式
        • 装饰者模式
        • 外观模式
        • 组合模式
        • 桥接模式
      • 四、行为型模式
        • 发布-订阅模式
        • 策略模式
        • 状态模式
        • 模板方法模式:咖啡厅制作咖啡
        • 迭代器模式:银行的点钞机
        • 命令模式:江湖通缉令
        • 职责链模式:领导,我想请个假
        • 中介者模式:找媒人介绍对象
      • 五、其他模式
        • MVC、MVP、MVVM
        • 模块模式
        • 链模式
        • 中间件
  • 精选模块

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

前端高频面试题-设计模式

# 设计模式

30 秒速记

  • 设计模式不是背类图,而是给反复出现的设计问题一套可复用的解法;目标都是把变化隔离,让代码高内聚、低耦合
  • 先按问题选模式:对象怎么创建看创建型,模块怎么组合看结构型,对象怎么协作看行为型
  • 前端高频抓住六个:单例管唯一实例,工厂藏创建细节,代理控制访问,策略替换算法,发布订阅解耦通信,适配器抹平接口差异
  • 判断有没有用对:需求变化时,是新增一个实现/订阅者,还是到处修改旧分支;前者更接近“对扩展开放,对修改关闭”
  • 加分点:模式有成本,简单问题直接写通常更清楚;出现重复变化、条件分支膨胀或模块强耦合时再引入

设计模式本质上是给重复出现的设计问题提供可复用方案,核心价值是隔离变化,让代码保持高内聚、低耦合。 创建对象的问题可以考虑创建型,模块组合看结构型,对象协作看行为型;前端常见的重点是工厂、代理、策略、发布订阅和适配器等。判断是否值得使用,要看需求变化时能否通过增加实现或订阅者完成扩展,而不是反复修改旧分支。模式本身也会增加抽象成本,简单逻辑直接实现通常更清楚,等到分支膨胀或模块强耦合时再引入更合适。

# 一、基础篇

# this、new、bind、call、apply

30 秒速记

  • this 由调用方式决定,不由函数定义位置决定;箭头函数没有自己的 this,只捕获外层词法值
  • 判断顺序:new 绑定 → bind/call/apply 显式绑定 → 对象方法隐式绑定 → 普通函数默认绑定
  • new 会创建对象、连接原型、以新对象调用构造函数,并在构造函数未返回对象时返回这个新对象
  • call/apply 立即调用,区别只是参数列表与参数数组;bind 返回永久绑定接收者的新函数
  • 边界:把对象方法直接交给回调会丢失接收者;类方法、事件回调和定时器里最常踩坑

普通函数的 this 由调用方式决定,而不是由声明位置决定;箭头函数没有自己的 this,会捕获外层的词法值。 判断时通常看 new 绑定、bind/call/apply 显式绑定、对象方法隐式绑定和普通函数默认绑定,优先级依次降低。new 会创建对象、连接构造函数原型并用新对象执行函数;构造函数没有返回其他对象时,最终返回该新对象。call 和 apply 会立即执行,区别是参数列表与参数数组,bind 则返回预先绑定接收者和部分参数的新函数。常见坑是把对象方法直接作为回调传递,此时调用形式改变,原来的接收者也就丢失了。

← 手写篇1 HTML模块 →

fe
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片NEW
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 业务场景题真实业务问题与追问
  • 查漏补缺常见问题解析
  • AI 模拟面试NEW模拟真实面试 + 报告
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
    • AI 定制路线NEW按你的简历现排
    • AI 知识地图NEW串起全站知识点
  • 动态
    • AI 热点NEWAI 每日动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
AI 助手NEW
旧版
  • 基础进阶

    • 基础篇
    • 进阶篇
    • 高频篇
    • 手写篇
    • 设计模式
      • 一、基础篇
        • this、new、bind、call、apply
        • 闭包与高阶函数
        • ES6
        • 继承与原型链
        • 设计原则
      • 二、创建型模式
        • 单例模式
        • 工厂模式
        • 抽象工厂模式
        • 建造者模式
      • 三、结构型模式
        • 代理模式
        • 享元模式
        • 适配器模式
        • 装饰者模式
        • 外观模式
        • 组合模式
        • 桥接模式
      • 四、行为型模式
        • 发布-订阅模式
        • 策略模式
        • 状态模式
        • 模板方法模式:咖啡厅制作咖啡
        • 迭代器模式:银行的点钞机
        • 命令模式:江湖通缉令
        • 职责链模式:领导,我想请个假
        • 中介者模式:找媒人介绍对象
      • 五、其他模式
        • MVC、MVP、MVVM
        • 模块模式
        • 链模式
        • 中间件
  • 精选模块