我正在设置es6 / oop税收计算器,并且在正确设置税收金额时遇到了一些问题。我用它们的数量和价格实例化产品对象,并将它们添加到库存中,然后在整个库存中调用total方法。有些产品免税,所以我使用的是BasicProduct对象和ExemptProduct对象:
const Product = require('./Product')
class ExemptProduct extends Product {
constructor(product) {
super(product)
this._salesTax = product.salesTax
}
get salesTax() {
return this.setSalesTax();
}
setSalesTax () {
return null;
}
}
module.exports = ExemptProduct
BasicObject将营业税设置为.10。我的total
方法在这里:
total() {
let total = 0
let tax = 0
let importDuty = .05
for (let productId in this.items) {
total += this.inventory.products.find(product => {
return product.id == productId
}).price * this.items[productId]
tax += this.inventory.products.find(product => {
return product.id == productId
}).salesTax * this.items[productId]
console.log(tax)
}
let taxToApply = total * tax
let importDutyToApply = total * importDuty
total = total + taxToApply + importDutyToApply
return total
}
现在我正在测试三个库存项目,其中两个正在实例化为免税产品。他们都以正确的税额注销,直到达到for in
。我留在其中的console.log会为所有三个输出.10,而其中两个应该为0 / null。我试图避免对每个项目的税额进行硬编码,因为最终将只有两种税种。