无法弄清楚构造函数JavaScript



我的代码不能正常工作,我不明白为什么。当你把卡转到学校时,他不会在上加钱

function Card (money=0) {
this.money = money;
}
Card.prototype.addMoney = function(mon) {
return this.money=this.money+mon;
}
function CreditCard (money =0) {
this.money = money; 
}
CreditCard.prototype = Object.create(Card.prototype);
function Shop (card) {
this.card = card
this.money=card.money;
this.addMoney=this.card.addMoney;
}
Shop.prototype = Object.create(Card.prototype);

let card1 = new CreditCard(50);
card1.addMoney(10);//60
card1.addMoney(10);//70
let card2 = new Card(250);
let shop1 = new Shop(card1);
shop1.addMoney(10);//80 but don't work
console.log(card1.money);
this.addMoney = this.card.addMoney;

这就是问题所在。该函数内部引用this.money,但由于该函数现在位于Shop类内部,因此this更改为引用商店。因此,您必须将函数绑定到卡。新线路将是:

this.addMoney = this.card.addMoney.bind(this.card);

商店不是一张卡片。您不应该在这里使用继承。商店一张卡片,所以选择合成:

function Shop (card) {
this.companyCard = card
}
Shop.prototype.addMoney = function(mon) {
this.companyCard.addMoney(mon);
};
Shop.prototype.getMoney = function() {
return this.companyCard.money;
};

最新更新