2016-12-25 7 views
2

私は相対JS初心者です。この質問をするときは、適切な用語を使用しています。データを関数式に渡す

私はいくつかのJSコーディング演習を行っていますが、この1つでは、1年がうるう年かどうかをテストする関数が必要です。 、入力が定義されていないようで、私のコードが書かれたよう

describe('Leap year', function() { 

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

var Year = function() {}; 

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

機能自体は、私にとっては問題ではありません、与えられたテストに合格するために、特定の方法でそれを書いていますnew Year(2015);に電話をかけてどうすればいいですか?

+0

値を関数に渡してコンストラクタに渡さないでください。 –

答えて

3

あなたが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コンストラクタ関数は、その後で、パラメータを、受け入れるpseudoclassicalインスタンス化スタイル、の利点を取っていますthisに保存されます(this.year = yearが実行される前は空のオブジェクトです)。次にisLeap()メソッドがYear(別名yearプロパティを持つオブジェクト)のインスタンスによって呼び出されるため、isLeap()メソッドはthis.yearでそのyearプロパティにアクセスできます。

+0

ありがとう、@therobinkim –

関連する問題