オブジェクトリテラルを使用してのクラス作成

example [javascript]

var parson = {
      name: 'Otti',
      age:27,
      CallName: function() { alert(this.name); },
      CallAge: function(txt) { alert( txt + this.age); }
   };
   function LoadEvent() {
      parson.CallName();
      parson.CallAge("Otti is ");
   }

一番簡単な作成方法です。ハッシュ形式でオブジェクトを定義します。


プロトタイプを使用してしないでのクラス作成

example [javascript]

function parson(val) {
      this.name = "Otti";
      this.age = val;
      this.CallName = function() { alert(this.name); }
      this.CallAge = function(txt) { alert(txt + this.age); }
   }
       
   function LoadEvent() {
      var obj = new parson(27);
      obj.CallName();
      obj.CallAge("Otti is ");
   }

これも比較的簡単な方法です。自身が保持するメンバには"this"キーワードを使用して定義します。


プロトタイプを使用してのクラス作成

example [javascript]

function parson(val) {
      this.name = "Otti";
      this.age = val;
   }
   parson.prototype.CallName = function(){ alert(this.name); }

   parson.prototype.CallAge = function(txt){ alert(txt + this.age); }

   function LoadEvent() {
      var obj = new parson(27);
      obj.CallName();
      obj.CallAge("Otti is ");
   }

自身が保持するメンバには"this"キーワードを使用して定義するところまでは、前とほぼ同じです。関数に限っては"prototype"キーワードを使用して追加していきます。


プロトタイプを上書きする

example [javascript]

function parson(val) {this.age = val;}
   parson.prototype = {
      name:"Otti",
      CallAge: function(){ alert(this.age); },
      CallName: function() { alert(this.name); }
   };
       
   function LoadEvent() {
      var obj = new parson(27);
      obj.CallName();
      obj.CallAge("Otti is ");
   }

function parson句のリテラルとなっているageプロパティ以外にも"prototype"によってあとから追加しています。

例えば、StringクラスにTrimを追加したりするのに便利です。


ほかの関数を横取りする

example [javascript]

var age = 100;
   function parson(val) {
      this.name = "Otti";
      this.age = val;
      this.CallAge = CallAge;
   }
   parson.prototype.CallName = function(){ alert(this.name); }

   function CallAge(txt){ alert(txt + this.age); }

   function LoadEvent() {
      var obj = new parson(27);
      obj.CallName();
      obj.CallAge("Otti is "); //①
      CallAge("window ");      //②
   }

最後のサンプルで、①と②のさすThis.ageの値に気をつけてください。