A类和B类对config成员保持相同的地址引用。我该如何分开它们?
class ConfigModel {
public static config = []
public foo() {
//Code
}
}
class A extends ConfigModel {
}
class B extends ConfigModel {
}
答案 0 :(得分:2)
您可能需要尝试以下操作:
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]
所有这一切都是为了第一次访问时动态定义静态属性。希望它有所帮助!
答案 1 :(得分:0)
您可以将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]