ボクココ

個人開発に関するテックブログ

勉強会の補足説明

ここで勉強会の3人目でJavaScriptの発表で登場した訳だけども、いろいろと手違いがあったので、ここで補足しておきます。
まず自分のjsdo.it に入れず、オブジェクト生成の例を見せることができませんでした。そのソースコードを書いておきます。


//連想配列的な書き方
var obj={'age': '22',
'printName': function(name){
document.writeln(name);
}
};

obj['printName']('Object_literal-1');
obj.printName('Object_literal-2');
//obj の型は何か
document.write(Object == obj.constructor); //true

document.write('<br><br>');

//クラス的な書き方
var Func = function(){
this.age=22;
};
Func.prototype.printName = function(name){
document.writeln(name);
};

var ins = new Func();

ins['printName']('Class_literal-2');
ins.printName('Class_literal-1');
//ins の型は何か
document.write(Func == ins.constructor); //true
document.write(Object == ins.constructor); //false

実行結果はhttp://jsdo.it/cev/huKjにて。
ここで注目してほしいのは、下のクラス的な書き方です。上の書き方は前回説明しました。
コンストラクタとプロトタイプを用いて、元の(クラス)を作っています。
この連想配列的書き方と、クラス的書き方の違いは、「型」です。
constructorプロパティで、それぞれの型を確認しています。
連想配列的コードはobjectオブジェクトで、クラス的コードは定義したMemberオブジェクトとなっています。
連想配列を使った場合、手軽にオブジェクトを作れることが便利ですが、大量に作るとなると手間がかかります。
一方のクラス的書き方は一回作ると、バリエーション豊富に一気にたくさんのインスタンスを作ることが可能です。
それぞれ場合によって使い分ければいいと思います。