Getter 本身不追踪变化,但能封装复利公式实现按需实时计算;配合响应式系统(如 Vue 的 computed 或 Proxy)可自动更新,适用于多层级财务表格,但无法处理异步、非线性规则或时间精度等复杂逻辑。

Getter 本身不追踪变化,也不能自动响应数据更新,但它能让你把复利计算逻辑“挂”在属性上,每次读取时实时执行最新运算——这正是财务表格需要的确定性与即时性。
用 Getter 封装复利公式,避免手动调用
传统写法需反复调用函数,易漏、难读、模板里冗长;Getter 让复利结果像普通属性一样自然访问:
- 定义本金、年利率、期数等基础字段(可为响应式或普通属性)
- 用 get compoundAmount() 封装复利公式:
principal * Math.pow(1 + rate, periods) - 只要这些基础值变了,下次访问
table.compoundAmount就自动重算,无需额外触发
处理多层级嵌套结构(如按年/月分表)
财务表格常含年度汇总、月度明细、不同币种子表。Getter 可逐层封装,保持语义清晰:
- 顶层
get totalUSD()汇总所有美元子表的compoundAmount - 子表
monthly[0].get compoundedValue()独立计算当月复利 - 所有 getter 内部都只依赖当前作用域下的确定字段,不跨层耦合
配合响应式系统(如 Vue 或 Proxy)实现真“实时”
纯 Getter 不监听变化,需搭配机制才能做到“一改全更新”:
- 在 Vue 中:把基础字段放
data或ref,getter 放computed,Vue 自动建立依赖追踪 - 在原生 JS 中:可用
Proxy拦截基础字段赋值,并触发refresh()或通知视图更新 - 关键点:getter 是“计算出口”,而响应式是“变化入口”,二者配合才构成闭环
注意边界:哪些不能靠 Getter 解决
复利逻辑看似简单,但实际业务中常有隐藏复杂度:
- 时间精度(是否按实际天数计息?闰年如何处理?)需在 getter 内显式建模,不能依赖外部状态
- 汇率波动、税费扣除、提前赎回罚金等非线性规则,建议拆成独立 getter(如
get netAmountAfterTax()),而非堆在一个大函数里 - 异步数据(如实时利率 API 返回)无法直接用于 getter —— getter 必须同步返回,应先用 loading 状态兜底,再用 computed 更新

















