JavaScript: クラスにメソッドを追加する

JavaScriptでクラスにメソッドを追加する方法は次の2つがあります。

  • コンストラクタで追加する方法
  • プロトタイプオブジェクトのメンバとして追加する方法

順番に具体例を見ていきます。

コンストラクタでメソッドを追加する方法

コンストラクタでメソッドを追加するにはコンストラクタ内に

this.メソッド名 = function(){...}

と記述します。下のコードではgetNumber()メソッドを追加しています。


function Card(num){
    this.number = num;
    this.getNumber = function(){
        return this.number;
    };
}

var c = new Card(5);
console.log(c.getNumber());  // 5

プロトタイプオブジェクトのメンバとして追加する方法

プロトタイプオブジェクトのメンバとしてメソッドを追加するには、コンストラクタの外で

コンストラクタ.prototype.メソッド名 = function(){...}

と記述します。getNumber()メソッドを追加する場合は次のようになります。


function Card(num){
    this.number = num;
}

Card.prototype.getNumber = function(){
    return this.number;
};

var c = new Card(5);
console.log(c.getNumber());  // 5

後者が推奨される理由

メモリの節約という観点から、 後者の「プロトタイプオブジェクトのメンバとして追加する方法」が推奨されています。

プロパティはインスタンス毎に違った値を持ちますが、メソッドの中身は同じです。 同じものを何個も持っているのはメモリの無駄です。

特にインスタンスを多数作成する場合は、後者のメモリ節約効果が大きくなります。

JavaScript入門