0

次のようにJavaScriptでクラスを定義できます。

var appender = function (elements, func) {
    this.Prop = something;
    staticProp = something_else;
};

私は正しいですか?では、どうすればこのクラスに静的フィールドを作成できますか?そして、どうすればクラス内のそのフィールドにアクセスできますか?つまり、クラスのすべてのインスタンス間で共有されるフィールドが必要です。

var ap1 = new appender();
var ap2 = new appender();
ap1.Prop = something1;
ap2.Prop = something2;
var t = ap1.Prop == ap2.Prop; // true
ap1.staticProp = something_static;
var s = ap2.staticProp = something_static; // I want to this returns true. how can I?
4

2 に答える 2

6

これはそう簡単には答えられません。Java などの他の言語から知っている static var のようには動作しません。

できることは、次のように関数に追加することです。

appender.staticProp = 3

つまり、関数内で関数名を使用して参照する必要があります。

var Person = function(name) {
   this.name = name;

   this.say = function() {
       console.log( Person.staticVar );
   }
}

Person.staticVar = 3;

したがって、ある程度静的な変数を追加できます。ただし、上記のようにしか参照できません。

于 2012-12-07T23:12:35.693 に答える
1

コメントを参照してください。

var appender = function (elements, func) {
    this.Prop = something; // member variable, ok
    staticProp = something_else; // global var (no var keyword!)
};

これを試して:

var appender = function (elements, func) {
    this.Prop = something;

};
appender.staticProp = something_else; // static member
于 2012-12-07T23:13:30.150 に答える