问题描述
class order {
constructor(gameName,qty,remQty,available){
this.gameName = gameName
this.qty = qty;
this.remQty = remQty;
this.available = available;
}
function() {
if (this.available == 0) {
return " is available"
} else {
return " is not available"
}
}
};
let order = new order ('Call of Duty','?','?')
let order = new order ('FIFA 21','?')
let order = new order ('Crash Bandicoot','?')
console.log(order1)
我的问题是,我是 JavaScript 的新手,无法让它工作。我想制作一个程序,显示在给定数量(库存)的情况下游戏是否可用,如果是,我的代码将响应“可用”否则“不可用”,并且根据给定的订单,剩余数量将发生变化。请帮助我,如果有进一步的问题,我会很乐意回答。
解决方法
您的尝试实际上非常接近,甚至比它必须的复杂。丢掉一些参数,remQty
和available
可以去。数量将简单地由一个数字确定,该数字在每次轮询可用性后递减。
我将函数命名为魔法发生的地方 getAvailability
。这个名称表明我们获得正在处理的订单的可用性。
你想知道在它里面:有什么可用的东西。这个答案可以通过检查我们还剩下多少数量来确定。我们可以通过检查数量是否is greater than zero > 0
来做到这一点。
if (this.qty > 0) {
// Quantity is more than 0.
} else {
// Quantity is not more than 0.
}
在这里,您将返回带有可用性文本的不同字符串。为了给它一些润色,最好使用插值在字符串中注入游戏名称,这是一个用于组合变量和字符串的奇特词。
最简单的方法是使用 Template literal strings。您可能知道字符串适用于 ' '
或 " "
,但这个适用于反引号 ` `
。在该字符串中,您可以像这样放置变量:
// this.gameName refers to the same gameName used in the constructor.
`${this.gameName} is available`;
现在在返回您的字符串(将结束函数)之前,您需要修改您的订单数量。这意味着用 1 减去 this.qty
。这可以通过递减赋值来完成:
// We assign a new value..
this.qty = this.qty - 1;
// ..this does the same,but is shorter.
this.qty -= 1;
// This is also the same,but here it always decrements with 1.
this.qty--;
现在您要做的就是调用 getAvailability
方法(调用意味着运行函数,方法意味着作为对象一部分的函数)并检查它返回的响应。
您可以使用 console.log()
输出变量和返回值。让这个工具成为你的朋友。它将照亮黑暗的地方,并帮助您确定下一步行动。
检查下面将所有这些原则放在一起的示例。随时提出任何问题。欢迎来到 JavaScript 的奇妙世界。
class Order {
constructor(gameName,qty) {
this.gameName = gameName;
this.qty = qty;
}
getAvailability() {
if (this.qty > 0) {
this.qty--;
return `${this.gameName} is available`;
} else {
return `${this.gameName} is not available`;
}
}
};
let codOrder = new Order('Call of Duty',5);
let fifaOrder = new Order('FIFA 21',2);
let crashBandicootOrder = new Order('Crash Bandicoot',1);
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( codOrder.getAvailability() );
console.log( fifaOrder.getAvailability() );
console.log( fifaOrder.getAvailability() );
console.log( fifaOrder.getAvailability() );
console.log( crashBandicootOrder.getAvailability() );
console.log( crashBandicootOrder.getAvailability() );
您的课程即将开始工作,我在此副本中对其进行了改进,您可以用来玩弄它:
class Order {
constructor(gameName,qty,remQty,available){
this.gameName = gameName
this.qty = qty;
this.remQty = remQty;
this.available = available;
}
isAvailable() {
if (this.available === 0) {
return " is available"
} else {
return " is not available"
}
}
};
const order1 = new Order ('Call of Duty','?',0)
const order2 = new Order ('FIFA 21',1)
const order3 = new Order ('Crash Bandicoot',0)
order1.isAvailable()
order2.isAvailable()