studio Odyssey




スタジオ日誌

日誌的なもの

2011.05.07

Javascript (Javaではない)

Written by
しゃちょ

 最近、お仕事で、古いASPの移植をしているのだが、Javascriptごりごり書くのは、意外と楽しい。

 っていうか、Javascriptはもっと認められてもいい言語ではなかろうか。単に使い方をみんなが間違っていて、HTMLのおまけみたいな感じでやってるからいけない。本気でJavascript書けば、かなり面白い事がいろいろ出来る。

 まぁ、開発環境があんまりないので、デバッグしづらいとかいろいろあるけどさ。でも、考え方よよっちゃ、テストスイートは結構あるんだし、オブジェクト指向で開発するんなら、テスト駆動開発するには、結構いい言語なんじゃないかなぁ。

 新人に教える言語としてはアレかも知れないけど、アルゴリズムとか、オブジェクト指向的な概念とかを教えるには、メモ帳とコマンドプロンプトだけで出来るし、悪くないと思うんだけどなぁ。

 続きを読むには、Javascriptを載せておく。これくらいのJavascriptを読んで内容が理解出来るくらいになると、Javascriptは結構楽しい。ちなみに、うちの部署のメンバーはたぶん読めない。

 コマンドプロンプトから、CScriptで実行するサンプルです。

var DateSample = function(dateValue) {

    var _dateValue = dateValue;

    this.getDateValue = function() {
        return _dateValue;
    };
}

DateSample.prototype = {
    
    getEras: function () {
        var result = new Array();

        //月は、0月~11月までなので注意
        result.push({
            EraNo:             0,
            EraName:            "明治",
            AbbreviatedEraName: "M",
            StartDate:         new Date(1868, 9 -1, 8, 0, 0, 0, 0),
            EndDate:            new Date(1912, 7 -1, 30, 0, 0, 0, 0)
            });

        result.push({
            EraNo:             1,
            EraName:            "大正",
            AbbreviatedEraName: "T",
            StartDate:         new Date(1912, 7 -1, 30, 0, 0, 0, 0),
            EndDate:            new Date(1926, 12 -1, 25, 0, 0, 0, 0)
            });

        result.push({
            EraNo:             2,
            EraName:            "昭和",
            AbbreviatedEraName: "S",
            StartDate:         new Date(1926, 12 -1, 25, 0, 0, 0, 0),
            EndDate:            new Date(1989, 1 -1, 7, 0, 0, 0, 0)
            });

        result.push({
            EraNo:             3,
            EraName:            "平成",
            AbbreviatedEraName: "H",
            StartDate:         new Date(1989, 1 -1, 8, 0, 0, 0, 0),
            EndDate:            new Date(9999, 12 -1, 31, 0, 0, 0, 0)
            });

        return result;
    },

    getEraData: function () {
        var eras = this.getEras();
        
        for (var i = eras.length; 0 < i; i--) {
            if (this.getDateValue() >= eras[i - 1].StartDate) {
                return eras[i - 1];
            }
        }
        return null;
    },
    
    getEraNameAndYear: function () {
        var era = this.getEraData();
        
        if (era == null) {
            return "";
        }
        else {
            var numYear = this.getDateValue().getFullYear();
            var warekiNen = new String(numYear - era.StartDate.getFullYear() + 1);
            return String(era.EraName + warekiNen);
     }
}
}

var d = new DateSample(new Date(2011, 5 - 1, 5));

WScript.Echo(d.getEraNameAndYear());

トラックバックURL

http://blog.studio-odyssey.net/cgi-bin/mt/mt-tb.cgi/681


コメントする