Я изучаю Javascript, поэтому любая помощь здесь будет оценена. В следующем фрагменте кода я создал два объекта johnTip и markTip, которые вычисляют сводку чаевых Джона и Марка. Метод tipCalculator реализован одинаково для обоих объектов. Однако после вызова markTip.calcTip () я обнаружил, что tipsJohn будет переопределен tipsMark, т. Е. Они имеют одинаковые значения. Кто-нибудь знает, что не так за кулисами и как это исправить? Спасибо.
Я пытался изменить порядок вызова этого метода на johnTip и markTip, но не исправил ошибку.
Ожидаемые результаты будут заключаться в том, что tipsJohn и tipsMark являются отдельными объектами (массивами). Тем не менее, похоже, что после вызова markTip.calcTip они имеют одинаковые значения.
var johnTip = {
bills: [124, 48, 268, 180, 42],
calcTip: function() {
tips = [];
finalBills = [];
for (var i = 0; i < this.bills.length; i++) {
if (this.bills[i] < 50) {
tips[i] = this.bills[i] * 0.2;
} else if (this.bills[i] < 200) {
tips[i] = this.bills[i] * 0.15;
} else {
tips[i] = this.bills[i] * 0.1;
}
finalBills[i] = tips[i] + this.bills[i];
}
return [tips, finalBills];
}
}
var markTip = {
bills: [77, 375, 110, 45],
calcTip: function() {
tips = [];
finalBills = [];
for (var i = 0; i < this.bills.length; i++) {
if (this.bills[i] < 100) {
tips[i] = this.bills[i] * 0.2;
} else if (this.bills[i] < 300) {
tips[i] = this.bills[i] * 0.10;
} else {
tips[i] = this.bills[i] * 0.25;
}
finalBills[i] = tips[i] + this.bills[i];
}
return [tips, finalBills];
}
}
let [tipsJohn, finalBillsJohn] = johnTip.calcTip();
let [tipsMark, finalBillsMark] = markTip.calcTip();
console.log('Mark\'s tip summary: ' + tipsMark);
console.log('Mark\'s final bills paid: ' + finalBillsMark);
console.log('John\'s tip summary: ' + tipsJohn);
console.log('John\'s final bills paid: ' + finalBillsJohn);