我的主要目的是建立一个简单的银行系统(转账,取款,接收,交易历史记录,addCard),每个用户最多可以拥有3张卡。
这是我的代码:
const parameters = {
tax: 0.05,
cardsLimit: 3
}
function userCard(number) {
const cardInformation = {
balance: 100,
transactionLimit: 100,
historyLogs: [],
key: number
}
// getCardOptions - return iformation about card
function getCardOptions() {
return cardInformation;
}
// putCredits
function putCredits(amount) {
cardInformation.balance = cardInformation.balance + amount;
updateHistoryLogs('Received credits', amount)
}
// takeCredits
function takeCredits(amount) {
cardInformation.balance = cardInformation.balance - amount + amount * parameters.tax;
updateHistoryLogs('Withdrawal of credits', amount);
}
// setTransactionLimit
function setTransactionLimit(amount) {
cardInformation.transactionLimit = amount;
updateHistoryLogs('Transaction limit change', amount);
}
// transferCredits
function transferCredits(amount, card) {
let amountwithTaxes = amount + amount * parameters.tax;
if (amountwithTaxes > cardInformation.balance) {
console.log('Not enough money')
} else if (amountwithTaxes > cardInformation.transactionLimit) {
console.log('Amount exceed the Transaction limit')
} else {
this.takeCredits(amount);
card.putCredits(amount);
}
}
// Logs about past transactions
function updateHistoryLogs(operation, credits) {
let input = {
operation,
credits,
operationTime: new Date().toLocaleString('en-GB')
};
cardInformation.historyLogs.push(input);
}
return {
getCardOptions,
putCredits,
takeCredits,
setTransactionLimit,
transferCredits
};
}
// addCard/getcardbyKey
class UserAccount {
constructor(name) {
this.name = name;
this.cards = [];
}
addCard() {
if (this.cards.length < parameters.cardsLimit) {
console.log('You\'ve got too many cards')
} else {
this.cards.push(userCard(this.cards.length + 1));
}
}
getCardByKey(number) {
return this.cards[number - 1];
}
}
当我尝试执行它并进行几次交易时,发生以下错误:
未捕获的TypeError:无法读取未定义的属性'putCredits'
我在主函数中定义了putCredits属性,不知道为什么代码未执行。
感谢任何帮助和建议!
这是我要执行的代码:
let user = new UserAccount('John');
user.addCard()
user.addCard()
let card1 = user.getCardByKey(1);
let card2 = user.getCardByKey(2);
card1.putCredits(1000);
card1.setTransactionLimit(500);
card1.transferCredits(500, card2);
card2.takeCredits(50);
console.log(card1.getCardOptions());
答案 0 :(得分:4)
问题在于您永远不会添加任何卡,因为您的@on_status
<class 'tweepy.models.Status'>
test1! #picture
@on_status
<class 'tweepy.models.Status'>
This is test picture tweet2! #picture
条件不正确。因此,当您尝试访问卡时:if
不确定。
您的addCard let card1 = user.getCardByKey(1);
条件应类似于:
if
代码:
if (this.cards.length > parameters.cardsLimit)