Node.js使用big.js时如何让类的计算属性返回Big类型实例
错误原因
你当前代码中的profit是类的普通实例方法,直接访问a.profit获取到的是函数对象本身,而非函数执行后返回的Big类型值,因此无法调用Big.js的内置方法。
解决方案
方案1:使用getter定义计算属性(推荐)
通过ES6的get关键字将profit定义为计算属性,访问时会自动执行逻辑返回结果,用法和buy、sell等普通属性完全一致:
const Big = require("big.js"); class Trade{ constructor(name, buy, sell) { this.name = name; this.buy = Big(buy); this.sell = Big(sell); } // 用get关键字声明计算属性 get profit() { return this.sell.minus(this.buy); } };
修改后即可直接按预期调用:
const a = new Trade("Widget", 123.12345678, 321.87654321) a.profit.toFixed(8) // 输出:198.75308643
该方案每次访问profit都会基于当前最新的buy、sell值重新计算,完全符合计算属性的特性。
方案2:直接执行方法(无需修改类定义)
如果不想改动原有类代码,调用时补充括号执行profit方法即可拿到返回的Big类型值:
a.profit().toFixed(8) // 输出:198.75308643
内容的提问来源于stack exchange,提问作者Dercni
相关产品推荐
相关产品推荐

