将数据传递到函数表达式

Passing data into a function expression

我是一个相对的 JS 新手,不确定我在问这个问题时是否使用了正确的术语。

我正在完成一些 JS 编码练习,这个特定的练习需要一个函数来测试一年是否是闰年。

var Year = function() {};

Year.prototype.isLeap = function(input) {
  if((input % 4 === 0) && (input % 100 !== 0)){
    return true;
  }
};

函数本身对我来说不是问题,它是以特定的方式编写它以通过给定的测试:

describe('Leap year', function() {

  it('is not very common', function() {
    var year = new Year(2015);
    expect(year.isLeap()).toBe(false);
  });

在我写的代码中,似乎输入未定义,我如何通过调用 new Year(2015); 将其传入?

如果您正在寻求使用 new Year(2015),那么我建议如下:

var Year = function(year) {
  this.year = year;
};

Year.prototype.isLeap = function() {
  return this.year % 4 === 0 && this.year % 100 !== 0;
};

describe('Leap year', function() {
  it('is not very common', function() {
    var year = new Year(2015);
    expect(year.isLeap()).toBe(false);
  });
});

在这里,我们利用了伪经典实例化风格,其中 Year 构造函数接受一个参数,然后将其保存在 this 上(这是 [=14 之前的空对象) =] 被执行)。然后,由于 isLeap() 方法被 Year 的实例调用(又名具有 year 属性 的对象),isLeap() 方法将能够通过 this.year.

访问 year 属性