var Hello = (function(){ // constructor function Hello(name){ this._name = name; } // private method function say(message){ console.log(message + ', ' + this._name); } // public method function hello(){ say.call(this, 'Hello'); } Hello.prototype = { // constructor 修正 constructor: Hello, // 以下 public メソッド hello: hello }; return Hello; }()); このパターンのポイントは、即時関数内にクラスに関係あるメソッドや変数をまとめるところ。 クラスの定義以外は、即時関数