函数表达式是JavaScript对象模型的关键推手,支持参数化构造、闭包封装私有状态、原型链继承、动态挂载方法及IIFE模块化封装。

函数表达式在 JavaScript 对象模型中不是配角,而是关键推手。它让对象的创建、行为绑定和结构扩展变得更可控、更动态,尤其适合需要按需生成或差异化配置对象的场景。
用函数表达式封装对象构造逻辑
相比直接写对象字面量,函数表达式可封装初始化过程,支持参数化、条件分支和副作用处理。
- 返回新对象:函数体内部用
return { ... }构建并返回对象,避免污染外部作用域 - 注入依赖:可接收配置项、工具函数或上下文作为参数,实现高度可复用的对象工厂
- 隐藏私有状态:利用闭包,在函数内定义变量,仅通过返回对象的公有方法暴露有限接口
结合 this 和原型链模拟类式继承
函数表达式常配合 new 使用,成为构造函数,从而参与原型链构建。
- 把函数赋给变量后用
new Func()调用,实例自动获得Func.prototype上的方法 - 可在原型上统一添加方法(如
Func.prototype.calc = function() {...}),节省内存 - 支持原型链继承:子构造函数内部调用
Parent.call(this, ...),再设置Child.prototype = Object.create(Parent.prototype)
动态挂载方法与属性
函数表达式可作为值被赋给对象属性,实现运行时行为注入。
立即学习“Java免费学习笔记(深入)”;
- 直接赋值:
obj.method = function() { ... };,该方法能访问闭包中的变量 - 批量绑定:
Object.assign(obj, { a: () => {}, b: function() {} }),快速组装能力集 - 条件挂载:根据环境或配置决定是否添加某个方法,比如
if (debug) obj.log = function() { console.debug(...); }
配合 IIFE 实现模块化对象封装
立即执行函数表达式(IIFE)是组织对象相关逻辑的轻量级模块方案。
- 隔离变量:内部定义的函数、常量不泄漏到全局,只暴露必要接口
- 预计算初始化数据:如缓存正则、解析配置、建立默认映射表等
- 返回一个结构清晰的对象,含 public 方法、private 工具函数和内部状态管理器


















