クラスAとBは、同じメンバ参照を構成メンバに保持しています。どうすればそれらを分けることができますか?クラスごとに継承された静的メンバ
class ConfigModel {
public static config = []
public foo() {
//Code
}
}
class A extends ConfigModel {
}
class B extends ConfigModel {
}
クラスAとBは、同じメンバ参照を構成メンバに保持しています。どうすればそれらを分けることができますか?クラスごとに継承された静的メンバ
class ConfigModel {
public static config = []
public foo() {
//Code
}
}
class A extends ConfigModel {
}
class B extends ConfigModel {
}
をあなたは次のことを試してみたいことがあります。
class ConfigModel {
static get config() {
return this._config = this._config || [];
}
}
class A extends ConfigModel {
}
class B extends ConfigModel {
}
A.config.push(1);
B.config.push(2);
console.log(A.config); // [1]
console.log(B.config); // [2]
すべてを定義するには一度初めてアクセスされたときのタイティックプロパティ。それが役に立てば幸い!
これは素晴らしいです。 TypeScriptの場合は 'private static _config'を追加するだけで完璧に動作します – R3Tech
あなたはA
とB
に新しい静的メンバーにConfigModel
の静的配列のクローンを作成することができます
class ConfigModel {
public static config = [1, 2];
}
class A extends ConfigModel {
public static config = ConfigModel.config.slice(0);
}
class B extends ConfigModel {
public static config = ConfigModel.config.slice(0);
}
console.log(ConfigModel.config); // [1, 2]
console.log(A.config); // [1, 2]
console.log(B.config); // [1, 2]
A.config.push(3);
console.log(ConfigModel.config); // [1, 2]
console.log(A.config); // [1, 2, 3]
console.log(B.config); // [1, 2]
B.config.pop();
console.log(ConfigModel.config); // [1, 2]
console.log(A.config); // [1, 2, 3]
console.log(B.config); // [1]
私は、すべてのクラスに構成メンバーを追加したくありません。 atmをテストするために、メンバーは公開されています。将来はプライベートになるでしょう。 – R3Tech
あなたは何を持っていますか?どのようにそれらを分ける? –
AとBにはconfigメンバがあります。しかし、A.configに何かを追加すると、B.configはそれを持ってはいけません – R3Tech
...なぜ静的な設定ですか? –