我正在学习JavaScript对象并对下面的代码有一个问题:对象" cashRegister"只有一种方法" add()"。然后,在对象外面还有另一种方法" scan()"。如何在代码结束时调用" cashRegister.scan()"如果"扫描"方法不属于" cachRegister"宾语?是因为" scan()"使用" add()"属于" cashRegister"的方法并且该用法使" scan()" " cashRegister"的方法或者什么?
var cashRegister = {
total:0,
add: function(itemCost){
this.total += itemCost;
},
scan: function(item, quantity) {
switch (item) {
case "A": this.add(0.98 * quantity); break;
case "B": this.add(1.23 * quantity); break;
case "C": this.add(4.99 * quantity); break;
case "D": this.add(0.45 * quantity); break;
}
}
};
// scan each item 4 times
cashRegister.scan("A", 4);
cashRegister.scan("B", 2);
cashRegister.scan("C", 4);
cashRegister.scan("D", 3);
//Show the total bill
console.log('Your bill is '+cashRegister.total);
答案 0 :(得分:2)
在给定的代码中,扫描方法实际上在cashRegister对象中,因为这是object" cashRegister"的方法,我们可以调用类似" cashRegister.scan()"。否则这会给出错误。在给定的代码中,错误将在调用" this.add()"方法也是" scan()" method将在cashRegister对象之外。
答案 1 :(得分:1)
在您的代码中,scan
方法实际上位于cashRegister
对象中。
答案 2 :(得分:1)
扫描方法属于收银机。 这里重新格式化了一些代码,所以你可以看到它:
var cashRegister =
{
total:0,
add: function(itemCost)
{
this.total += itemCost;
},
scan: function(item, quantity)
{
switch (item)
{
case "A": this.add(0.98 * quantity); break;
case "B": this.add(1.23 * quantity); break;
case "C": this.add(4.99 * quantity); break;
case "D": this.add(0.45 * quantity); break;
}
}
};
// scan each item 4 times
cashRegister.scan("A", 4);
cashRegister.scan("B", 2);
cashRegister.scan("C", 4);
cashRegister.scan("D", 3);
//Show the total bill
console.log('Your bill is '+cashRegister.total);