Javascript:调用不属于对象的方法

时间:2015-01-06 07:33:50

标签: javascript object methods

我正在学习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);

3 个答案:

答案 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);