构造函数的JavaScript输出返回为';未定义';

构造函数的JavaScript输出返回为';未定义';,javascript,constructor,return,private,public,Javascript,Constructor,Return,Private,Public,当我将参数传递到console.log()内部的setGear()时,结果返回未定义的,这是为什么?结果应该是我要传递的号码 var Bike = function() { var gear = 2; // private var set to an arbitrary number this.setGear = function(change) { // public method gear = change; }; this

当我将参数传递到
console.log()
内部的
setGear()
时,结果返回
未定义的
,这是为什么?结果应该是我要传递的号码

var Bike = function() {
  var gear = 2;                     // private var set to an arbitrary number

  this.setGear = function(change) { // public method
    gear = change;
  };

  this.getGear = function() {       // public method
    return gear;
  };
};

var myBike = new Bike();

console.log(myBike.setGear(4)); // returns undefined, should return 4
console.log(myBike.setGear(3)); // returns undefined, should return 3
console.log(myBike.setGear(1)); // returns undefined, should return 1
不应该返回4

this.setGear = function(change) { // public method
  gear = change;
  return gear;
};

应该执行

如果设置myBike.setGear,则应调用myBike.getGear函数以返回档位;

我的自行车。设置齿轮(4);
console.log(myBike.getGear);

setGear
不返回任何内容,因此
undefined
是默认的返回值。setter不应返回任何内容,getter应…@epascarello---正是!也许我应该在发帖前说清楚,这样我的问题就不会被否决了。这段代码来自一个免费的代码训练营练习,该练习旨在演示一个构造函数。我不认为从
getGear()
返回有什么意义,但这正是他们提供的。我只是想在node.js中看到结果,所以添加返回或调用
myBike.getGear()
@epascarello---我只是想让它按照代码提供的方式工作。我现在看到他们的例子是一个坏例子,我希望在与之抗争之前,我能看到这一点,然后花时间发布我的问题。我就不说了,不过谢谢你的意见,这很有帮助。
this.setGear = function(change) { // public method
  gear = change;
  return gear;
};