フロントサイドエンジニアという選択肢

HTMLコーダー → ECサイト運営 → システムエンジニア という経歴の著者がフロントサイトエンジニアという職業に今後の活路を見出し、その道に進むために取得した技術を貯めておくブログ

(Javascript)prototypeプロパティ

すべての関数は、prototypeというプロパティを内部に保持しています。
prototypeは参照値を保持するためのプロパティで、ここに定義した変数やメソッドは、インスタンスが共通で参照する値となります。

prototypeで定義されたオブジェクトはインスタンスとは別なところに保持され、各インスタンスから参照されます。インスタンスを多く作成する場合にはメモリの節約に役立ちます。

// 日本語マップの中にある文字を位置を指定して取り出すオブジェクト
function japaneseWord(a, b)
{
    // ひらがな一覧マップを返すメソッド
    // インスタンスにはこのメソッドへの参照値が保持される
    // thisではなく関数名で指定するのがポイント
    japaneseWord.prototype.japanese = function(){
        return [
            ['あ','い','う','え','お'],
            ['か','き','く','け','こ'],
            ['さ','し','す','せ','そ'],
            ['た','ち','つ','て','と'],
            ['な','に','ぬ','ね','の'],
            ['は','ひ','ふ','へ','ほ'],
            ['ま','み','む','め','も'],
            ['や','','ゆ','','よ'],
            ['ら','り','る','れ','ろ'],
            ['わ','','を','','ん']
        ];
    }();
    
    // 実際にインスタンスのメンバとして保持される変数
    this.value = this.japanese[a-1][b-1];
};

// 各インスタンスにはvalueのみ保持される。
var word1 = new japaneseWord(4,4);
var word2 = new japaneseWord(3,3);
var word3 = new japaneseWord(4,5);

document.write(word1.value, word2.value, word3.value); // てすと