hogehoge foobar Blog Style Beta

Web,Mac,Linux,JavaScript,Perl,PHP,RegExp,Git,Vim,Redmineなど技術的なことのメモや、ちょっと便利そうなものの紹介をしています。

JavaScript配列でeach

JavaScriptは拡張性の高い言語ということで、標準オブジェクトを自分で拡張して、
便利に使うことができます。
例えば、Rubyの配列で使用できるeachみたいなものも、自分で作ることができました。
以下のページを参考にさせていただきました。
IT Pro - Part3 JavaScriptに学ぶ「言語の拡張性」

/* Arrayオブジェクトにeachメソッドを追加する */
Array.prototype.each = function(func) {
    for (var i =0; i < this.length; i ++) {
        func(this[i]);
    }
};

ということで、自分でも拡張してみました。
Dateオブジェクトに月の日数取得メソッドと、次月と前月を取得するメソッドを追加してみました。

/* 月の日数を取得 */
Date.prototype.getMonthEndDay = function() {
    var dt = new Date(this.getFullYear(), this.getMonth(), 0);
    return dt.getDate();
};

/* 次月を取得 */
Date.prototype.nextMonth = function() {
    var after_year = this.getFullYear();
    var after_month = this.getMonth() + 1;
    if( after_month >= 13 ){
        after_year++;
        after_month = 1;
    }
 return { year: after_year, month: after_month }
};

/* 前月を取得 */
Date.prototype.prevMonth = function() {
    var after_year = this.getFullYear();
    var after_month = this.getMonth() - 1;
    if( after_month <= 0 ){
        after_year--;
        after_month = 12;
    }
 return { year: after_year, month: after_month }
};