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()" 方法也会出错。
我正在学习 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()" 方法也会出错。