類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]
它所做的只是定義s第一次訪問tatic財產。希望能幫助到你!
這真棒。對於TypeScript,我只添加'private static _config',它的功能非常完美 – R3Tech
您可以克隆的ConfigModel
靜態數組轉換成新的靜態成員A
和B
:
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有配置成員。但是,如果我添加一些A.config,B.config不應該有它 – R3Tech
...那麼爲什麼配置靜態? –