2009-05-12 1 views
2

... オブジェクト指向プログラミング - コンストラクタ、私はこれをたくさん見てきた

function myObject(data) { 
     var myData = data; 
} 

myObject.prototype.doSomething = function() { 
     alert("I did something!"); 
} 

が、Visual Studioの上のインテリセンスは私に私は希望これを信じるようにつながる機能のための.constructorを与えます正しいと...

function myObject() { 
    var myData; 

    this.constructor = function(data) { 
     myData = data; 
    } 

    this.doSomething = function() { 
     alert("I did something!"); 
    } 
} 

私は第2の方法のカプセル化が好きですが、ほとんどすべての人が ".prototype"を使用します。 特にこれを行う理由はありますか?またはこのようなすべてのクラスメソッドをカプセル化しても問題ありません。

答えて

3

これはまったくではないconstructorのことです。単に関数を返すだけです。あなたのケースでは、それはmyObjectを返すでしょう。たとえば:

function someObject() { 
    this.a = 5; 
} 
var obj = new someObject(); 
obj.constructor; // Would return someObject 

constructorプロパティの詳細についてはthisを参照してください。

prototypeの使用のポイントは、作成後にコンストラクタを拡張できることです。たとえば、すべてのStringオブジェクトにメソッドを追加するために使用できます。

String.prototype.myFunc = function(){/*Some code*/}; 
関連する問題