2016-12-06 9 views
9

Javascript/Node JSを使用して静的クラスを作成したいとします。私はgoogleを使用しましたが、私は有用な例を見つけることができません。javascript/nodejsで静的関数/オブジェクトを作成する方法(ES6)

私はJavascript ES6でこのような何か(C#)と作成したい:今のところ

public static MyStaticClass { 
    public static void someMethod() { 
     //do stuff here 
    } 
} 

を、私はこのクラスを持っていますが、私はこのコードは、新しいインスタンスにそれが呼ばれるたびに作成することを考えますから "require"。

function MyStaticClass() { 
    let someMethod =() => { 
     //do some stuff 
    } 
} 
var myInstance = new MyStaticClass(); 
module.exports = factory; 
+0

その後、クラスは必要ありません。あなたにはオブジェクトが必要です。 – estus

答えて

16

注するための方法を定義するstaticキーワードを使用することができますの代わりにprototype-based programmingです。

代わりにそのメソッドにアクセスするためのクラスを複数回作成する、あなただけのJSで以来

var MyStaticClass = { 
    someMethod: function() { 
     console.log('Doing someMethod'); 
    } 
} 

MyStaticClass.someMethod(); // Doing someMethod 

のように、オブジェクトのメソッドを作成することができ、すべてが(除くprimitive types + undefined + null)オブジェクトであります。上の関数someMethodを作成するときと同じように、実際にはの中でsomeMethodというオブジェクトでアクセスできる新しい関数オブジェクトを作成しました。

しかし、あなたはそれがより便利なクラスを使用するために見つけた場合は、(あなたがMyStaticClass.someMethod.prototypeMyStaticClass.someMethod.nameようsomeMethodオブジェクトのプロパティにアクセスすることができた理由です)。 ES6はstatic methodsで動作するようになりました。

など。

MyStaticClass.js

class MyStaticClass { 
    static someMethod() { 
     console.log('Doing someMethod'); 
    } 

    static anotherMethod() { 
     console.log('Doing anotherMethod'); 
    } 
} 

module.exports = MyStaticClass; 

Main.js

var MyStaticClass = require("./MyStaticClass"); 

MyStaticClass.someMethod(); // Doing someMethod 
MyStaticClass.anotherMethod(); // Doing anotherMethod 
+2

があります。ES6クラスでも、プロトタイプベースの継承新しい "クラス"は、プロトタイプベースの継承で古典的継承のよく知られた構文を使用するようにする構文的な砂糖です。 JavaScriptオブジェクトはクラスからパターン化されていません。パターンは、「これらの違いを除いて、そのオブジェクトの上にあるオブジェクトのようです。 – PMV

3

私は、オブジェクトリテラルを使用します。

const myObject = { 
    someMethod() { 
    // do stuff here 
    } 
} 

module.exports = myObject; 
+0

これは 'someMethod:function(){}'ではないでしょうか?編集:私は参照してください、 –

+0

ECMAScript6でメソッドの定義です。チェックしてくださいhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Method_definitions – mattias

+0

@ChrisG ES6には新しい構文 – naomik

3

あなたはJSというクラス

class MyStatisticsClass { 
 
    static someMethod() { 
 
    return "MyStatisticsClass static method" 
 
    } 
 
} 
 

 
console.log(MyStatisticsClass.someMethod());

関連する問題