Object.create。
モダンブラウザが中心となってきて、ECMAScript5も標準化しつつあるので、クラス(オブジェクト)のコンストラクタ化も明示的に記述できそうです。
以前までのプロトタイプ
よく例に出される書き方です。
var constructor = function(){};
constructor.prototype = {
A : function(int){
return 1 + int;
}
, B : 2
};
var object = new constructor();
console.log( object.A(2)+object.B );
まずコンストラクタを作るためにFunctionオブジェクトを生成。それを親として、継承(実際はちょっと違いますが…)させたい新規オブジェクトにNewで追加します。しかし、ECMAscript5からオブジェクト指向のクラス継承を認識しやすく書けるようになりました。
ECMAscript5から追加されたObject.create()
Object.create(prototype_function)
視覚的に分かりやすく、シンプルに書く事が出来ます。
var constructor = {
A : function(int){
return 1 + int;
}
, B : 2
}
, object = Object.create(constructor);
console.log( object.A(2)+object.B );
ECMA5に対応してない場合のためにメソッドを追加。
//ECMAScript5に対応してない場合は追加
if(Object.create){
Object.create = function(constructor) {
var object = function(){};
object.prototype = constructor;
return new object();
};
};
prototype.clone的な。素敵ですねー。
コード間違えていたので削除しました。
書き方次第ではあるんですけどね。プログラムとして見栄えも悪く(自身を宣言していてなにか気持ち悪い)、Object.create
とメソッド化してた方が断然分かりやすいです。