用构造函数创建业务模型的核心是封装共性数据与行为为可复用模板,通过new实例化;构造函数首字母大写、接收参数并用this绑定属性,避免异步操作,可加校验;通用方法挂载原型以节省内存;复杂初始化抽离为静态方法或工厂函数;配合instanceof确保类型识别准确。

用构造函数创建业务模型,核心是把一类业务实体的共性数据和行为封装成可复用的模板,再通过 new 实例化出具体对象。
定义清晰的构造函数
构造函数名首字母大写(约定),接收初始化参数,用 this 绑定实例属性。例如表示「订单」的业务模型:
- 订单号、用户ID、商品列表、状态、创建时间等关键字段都挂载到
this上 - 避免在构造函数里直接调用异步操作或副作用逻辑,保持纯净初始化
- 可加简单校验,比如必填字段缺失时抛错,防止创建无效实例
在原型上添加业务方法
把通用行为(如计算总价、变更状态、生成摘要)放在 Constructor.prototype 上,节省内存、支持继承:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
Order.prototype.getTotal = function() { return this.items.reduce(...); }Order.prototype.confirm = function() { if (this.status === 'pending') this.status = 'confirmed'; }- 不推荐在构造函数内重复定义方法(如
this.getTotal = function() {...}),每个实例都会多一份函数副本
配合工厂或静态方法增强可读性
构造函数本身只负责“造出来”,复杂初始化逻辑可抽离为静态方法或工厂函数:
Order.fromAPIResponse = function(data) { return new Order(data.id, data.user_id, data.items, data.status); }- 支持从不同来源(API、表单、本地缓存)统一构建模型实例,解耦数据来源与模型结构
- 可结合 class 语法(ES6+)提升可维护性,但底层仍是基于构造函数的机制
注意原型链与 instanceof 的配合使用
业务中常需判断对象类型,instanceof 依赖原型链,确保模型实例能被准确识别:
const order = new Order(...); console.log(order instanceof Order); // true- 若后续需扩展(如
PaidOrder继承Order),可通过Object.setPrototypeOf(PaidOrder.prototype, Order.prototype)或class实现 - 避免直接重写
constructor或篡改原型链,否则影响类型判断和调试体验
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










