現金自動預け払い機を作成するために、基本的な関数を作成しようとしています。以下のコードを実行するたびに、合計が 0 のままになります。誰か助けてくれたり、理由を説明してくれませんか?
function VirtualCashMachine(){
//object storing food
this.food = {egg: 0.98, milk: 1.23, magazine: 4.99,chocolate: 0.45};
//total bill
this.total = 0;
//record of last transaction
this.lastTransactionAmount = 0;
//assign public methods
this.scan = scan;
this.voidLastTransaction = voidLastTransaction;
//define public methods
//add amount to total property
function scan(/*string*/item,/*integer*/ quantity){
//if food item exists in food object, find price and calculate total
if(this.food.hasOwnProperty(item)){
cost = this.food[item] * quantity;
add(cost);
this.lastTransactionAmount = cost;
}
};
function voidLastTransaction(){
this.total -= lastTransactionAmount;
};
//define private method
//add item price to total
function add(itemCost){
this.total = this.total + itemCost;
};
}
var VCM = new VirtualCashMachine();
VCM.scan("egg", 3);
console.log(VCM.total);
add 関数を実装したときに問題が発生したようです。私の推論は、この例で 3 つの卵の合計コストを見つけたら、その金額を に追加し、this.total
他の種類の食品についてこれを繰り返すことができるということです。