prototypeオブジェクト

概要

コンストラクタでメソッドを定義する際はメモリを消費しているが、prototypeで定義することで
メモリの消費量を軽減できる

定義

// オブジェクト定義
var MyClass = function(){};
    //コンストラクタでメソッドを定義しない
};
 
// プロトタイプメソッドを定義
MyClass.prototype.メソッド = function(){
    // 処理
};
 
 

サンプル

ソース

// オブジェクト定義
var MyClass = function(name){
    // プロパティ定義
    this.name = name;
 
    //コンストラクタでメソッドを定義しない
};
 
// プロトタイプメソッドを定義
MyClass.prototype.getData01 = function(){
    return 'name = ' + this.name + '<br />';
};
 
// オブジェクトのインスタンスを生成して実行
var obj1 = new MyClass('User01');
 
// 結果を出力
document.writeln(obj1.getData01());
document.writeln("<br />");
 
 

結果

name = User01
 
 

オブジェクトリテラルで定義

ソース

// オブジェクト定義
var MyClass = function(name){
    // プロパティ定義
    this.name = name;
 
    //コンストラクタでメソッドを定義しない
};
 
// オブジェクトリテラルでプロトタイプを定義
MyClass.prototype ={
    getData01 : function(name){
                    return 'name  = ' + name + '<br />';
                },
    getData02 : function(label){
                    return 'label = ' + label + '<br />';
                },
};
 
// オブジェクトのインスタンスを生成して実行
var obj1 = new MyClass('User01');
 
// 結果を出力
document.writeln(obj1.getData01('Test Name01'));
document.writeln("<br />");
 
// 結果を出力
document.writeln(obj1.getData02('Test Name02'));
document.writeln("<br />");
 
 

結果

name = Test Name01
 
label = Test Name02
 
 




最終更新:2012年02月18日 08:52