2012-04-16 19 views
2

Javascriptには従来のOOP言語と同じ方法でクラスがなく、次のような「クラス」定義は単に使用できる関数オブジェクトnewキーワードで:グローバルオブジェクト内で定義されたクラスのJavascript静的メソッド

function MyClass(){ 
    this.a = function(){ /* Do something */ }; // Public function 
    function b(){ /* Do something */ }; // Private function 
} 

私は思ったんだけど、私は(名前空間を汚染を避けるために)グローバルオブジェクトを定義し、このオブジェクト内の私のクラスを定義した場合、私は私のクラスの静的メソッドを定義することができ、ありますこれよりも良い方法:

var MyObject = { 
    MyClass: function(){ 
    this.a = function(){ /* Do something */ }; // Public function 
    function b(){ /* Do something */ }; // Private function 
    }, 
} 
MyObject.MyClass.MyStaticMethod = function(){ /* Do something */ }; 

MyStaticMethodMyClassの機能スコープの中に定義するという行に何か考えていましたか?これは可能でしょうか?

var MyObject = { 
    MyClass: function(){ 
     this.a = function(){ /* Do instance-y stuff */ }; 
     MyClass.MyStaticMethod = function(){ /* Do static-y stuff */ }; 
    } 
} 

を私はそれが悪いアイデアだと思う:

答えて

0

あなたはこれを行うことができます。一般的には、コンストラクタの静的メソッドとインスタンスメソッドの両方を定義する方が良い方法だと思います。次のように:

function MyClass() { /* Do initialization stuff */ } 
MyClass.prototype.a = function() { /* Do instance-y stuff */ } 
MyClass.MyStaticMethod = function() { /* Do static-y stuff */ } 
関連する問題