所以我创建了一个简单的类:
export class myClass {
private static _instance: myClass;
public name: string;
public metrics: Array<Metric>;
private constructor() {
this.set_metrics();
//...
}
public static get Instance() {
// Do you need arguments? Make it a regular method instead.
return (this._instance = new this());
}
public set_model_name( name: string ) {
this.name = name;
}
private set_metrics() {
this.metrics = _metrics;
}
}
let metrics: Array<Metric> = [
{
a: "one",
b: "two",
c: "three"
},
{
a: "four",
b: "five",
c: "six"
}
]
我现在的问题是,当我这样做时:
instance_1 = myClass.Instance;
instance_2 = myClass.Instance;
instance_1.set_metrics([
{
a: "seven",
b: "eight",
c: "nine"
},
{
a: "ten",
b: "eleven",
c: "twelve"
}
])
我发现两个实例&#39;指标似乎在变化?这是因为在更改指标时,我实际上是在更改原始版本的指标。&#39;定义我定义类的位置?如何使用相同的默认数据实例化不同的实例 - 但允许数据可以独立更改?
我希望这是有道理的,我已经稍微偏离了实际代码的示例,希望能让它更容易看到一些问题
答案 0 :(得分:0)
private set_metrics(){
this.metrics = _metrics;
}
看起来你没有收到任何值,但静态地设置_metrics看起来像某种全局变量
private set_metrics(value: type){
this.metrics = value;
}
然后每个班级都有自己的this.metrics。或者你只是传递给同一个对象的所有引用。
答案 1 :(得分:0)
在示例中,您没有使用指标,变量,但无论如何,您有多个解决方案,您可以:
并且执行:
instance_1 = myClass.Instance; instance_2 = myClass.Instance; instance_1.set_metrics([...度量])
使用这种方法,您将创建一个新数组。