多分tkturboさんの回答がいいかな。
JavaScriptもオブジェクト指向だけど、プロトタイプベースと呼ばれていて、C++とかJavaみたいなクラスを組む方式とは違うみたいです。
クラスベースは例えば
C++
1class Test{
2 public:
3 void method1( void );
4};
だったら、Testクラスから生成したオブジェクトは method1しか持っていないけど、
JavaScriptの場合は
JavaScript
1// 上の C++版をプロトタイプとしてJavaScriptに書き換えたものがあるとして
2var test = new Test();
3test.a = 100; // <- C++とかならエラーが出る処理
みたいにあたか"もとともと存在していたかのように"新しいメソッドやフィールドを追加することができるみたい。
で、上記のJavaScriptの方だと test.a はフィールド ( 変数 ) として使っているけど、
メソッドも可能。
でももし
JavaScript
1b = test.method100();
のように「ありもしない関数」を使おうとすると定義がないから処理できない。
なので定義する必要がある。
そこでtkturboさんが提示したやつみたいに、
後から設定する。みたいなことじゃないかなと。