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

Javascript: invoking a method which does not belong to an object

我正在学习 JavaScript 个对象,有一个关于下面代码的问题:对象 "cashRegister" 只有 1 个方法 "add()"。然后,对象之外还有另一个方法"scan()"。如果 "scan" 方法不属于 "cachRegister" 对象,怎么可能在代码末尾调用 "cashRegister.scan()"?是因为 "scan()" 使用属于 "cashRegister" 的 "add()" 方法,并且该用法使 "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);

在您的代码中,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);

在给定的代码中,扫描方法实际上在 cashRegister 对象内部,因为这是对象 "cashRegister" 的方法,我们可以像 "cashRegister.scan()" 一样调用。否则会报错。在给定的代码中,如果 "scan()" 方法在 cashRegister 对象之外,调用 "this.add()" 方法也会出错。