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"が無事アラートされてます。
とりあえず、まずは感じ。
全然足りないとは思うけど、 雰囲気はつかめるかな もうちょい勉強してみよ。