为什么构造函数会为此代码返回预设/初始值?
我正在调用值为5的setGear()
,但getGear()
返回1而不是5。
可以通过将setGear()
函数中的参数名称更改为'gear'以外的任何名称来解决此问题。
var Bike = function() {
var gear = 1;
this.getGear = function() {
return gear;
};
this.setGear = function(gear) {
gear = gear;
};
};
////////
var myBike = new Bike();
myBike.setGear(5);
result = myBike.getGear();
最佳答案
这是因为您在set Gear方法中使用了相同的变量名gear。
当您调用函数setGear(gear)时,gear将采用Bike函数中定义的局部变量gear的值。
将变量名称更改为其他名称,例如输入
var Bike = function() {
var gear = 1;
this.getGear = function() {
return gear;
};
this.setGear = function(input) {
gear = input;
};
};
////////
var myBike = new Bike();
myBike.setGear(5);
result = myBike.getGear();
console.log(result);