javascript - 将数据传递到函数表达式中

标签 javascript tdd

我是一个相对 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 上(这是一个空对象)在执行 this.year =year 之前)。然后,由于 isLeap() 方法是由 Year 的实例(又名具有 year 属性的对象)调用的,因此 isLeap() 方法将能够通过 this.year 访问该 year 属性。

关于javascript - 将数据传递到函数表达式中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41324000/

相关文章:

javascript - 防止 Chrome 强制滚动光标进入 View

ios - 用于 PC Mockito 模拟验证的自定义 Hamcrest 匹配器

php - 追溯 phpUnit 测试 : is it worth it?

tdd - 测试驱动开发与测试驱动设计相同吗?

unit-testing - 什么是 "Stub"?

javascript - 如何在 JavaScript 中创建这个简单的警报?

javascript - CSS3可计算表达式?

javascript - 如何在不使用 GetUserMedia() 的情况下激活 HTML 网络摄像头

javascript - 这里的范围是改变了还是别的什么?

unit-testing - 单元测试站点地图节点