スタティック(またはクラス)プロパティをES6クラスに設定し、そのクラスの新しいインスタンスを作成した後に変更する別の方法を見つけようとしています。ES6クラス - 静的プロパティを更新する
たとえば、私はGeoというクラスがあり、Geoクラスのすべてのインスタンスの配列を与える 'all'という静的プロパティが必要です。
このバージョンでは動作します:
class Geo {
constructor(name){
this.name = name;
Geo.all.push(this);
}
}
Geo.all = [];
ruby = new Geo("Ruby");
rocks = new Geo("Rocks");
console.log(Geo.all.length); // => 2
私も、クラス定義のプロパティOUTSIDEを設定していないことを好むだろう。私はいくつか試してみましたが、コンストラクタから更新できるクラス内に静的プロパティを作成できないようです。
私はまた、Babelなどを使用せずにブラウザ(Chrome)でこれを行う必要があることを言及する必要があります。ここで
は、私が試したいくつかの例です:
class Geo {
constructor(name){
this.name = name;
Geo.all.push(this);
}
static get all() {
return [];
}
}
ruby = new Geo("Ruby");
rocks = new Geo("Rocks");
console.log(Geo.all.length); // => 0
、別の
class Geo {
constructor(name){
this.name = name;
Geo.all.push(this);
}
static all = [];
}
ruby = new Geo("Ruby");
rocks = new Geo("Rocks");
console.log(Geo.all.length); // => error unexpected "="
任意の助けいただければ幸いです。
これを行う方法は他にありません。 – Bergi
'Geo.all = []'の何が問題なのですか? – dfsq
グローバルなインスタンスのコレクションを持たないでください。メモリリークやモジュール化(テスト可能性など)の問題が発生します – Bergi