JavascriptにもJavaと同様にnewという演算子で、 インスタンスを生成できる。
ただし、Javaの感覚で使っていると どうも正しい理解につながらないと感じ、 JavaScriptのnew 演算子とできるだけ同じ動作をするように 自作new関数を作ってみた。
まずは、new演算子って何が行われるの?
- Objectクラスのインスタンスを生成し、
- そのオブジェクトをレシーバーにし、クラス定義関数を適用する。
- constractorプロパティを置き換える
で、以下がそれに忠実に作ってみた 自作new関数です。
// 自作 new関数
function new( cf )
{
var obj = {};
cf.call( obj );
obj.constractor = cf;
return obj;
}
こんな感じ。
使ってみる。
// Docクラスを生成
function Doc()
{
this.name = "pochi";
}
Doc.prototype.call = function(){ alert( this.name ) };
// 標準の方法でインスタンス生成
var doc_obj = new Doc();
// 自作new関数でインスタンス生成
var my_doc_obj = new( Doc );
標準の方法と、自作newの二通りの方法でインスタンスを生成。
呼び出してみる。
doc_obj.call(); my_doc_obj.call();"pochi"が無事アラートされてます。
とりあえず、まずは感じ。
全然足りないとは思うけど、 雰囲気はつかめるかな もうちょい勉強してみよ。