Javascript 类内对象内的vue v2值属性已更改,但未更改

Javascript 类内对象内的vue v2值属性已更改,但未更改,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我正在使用vue v2创建SPA。 我在vue组件的脚本部分声明了一个类似这样的提供类: class Offer { constructor(Tariff, TariffCopy, billing, at, fa, backs) { this.Tariff = Tariff; this.BaseTariff = TariffCopy; } changeSAC(p1, p2) { ... this.Tariff

我正在使用vue v2创建SPA。 我在vue组件的脚本部分声明了一个类似这样的提供类:

class Offer {
       constructor(Tariff, TariffCopy, billing, at, fa, backs) {
       this.Tariff = Tariff;
       this.BaseTariff = TariffCopy;
    }

    changeSAC(p1, p2) {
       ...
       this.Tariff.provAufwand.SO = this.BaseTariff.provAufwand.SO + Number(p1);
    }
}
Tariff和TariffCopy是从名为Tariff的自定义类初始化的对象,该自定义类也在同一组件的脚本部分声明。基本上,它们包含相同的价值,但关税可能会发生价值变化,而基本关税的价值应保持不变

class Tariff{
    constructor(provAufwand) {
        this.provAufwand = provAufwand;
    }
}
在哪里

调用
Offer.changeSAC(p1,p2)
(p1和p2通过
v-model=“p1”
v-model=“p2”
绑定到数字输入)时,
这个.BaseTariff.provAufwand.SO的值也会改变,尽管我从未在代码中更改过它。

为什么呢?在我的代码中,它们连接在哪里?

假设您创建了
关税
实例,如下所示:

const provAufwand= {
    SO: 1,
    HO5: 2,
    HO10: 3,
    HO20: 4
};
const tariff = new Tariff(provAufwand);
const tariffCopy = new Tariff(provAufwand);
那么,当您更改
关税
时,
基本关税
关税副本
也在更改的原因是,它们引用的是相同的
provAufwand
对象

const provAufwand= {
    SO: 1,
    HO5: 2,
    HO10: 3,
    HO20: 4
};
const tarrif = new Tariff({...provAufwand});
const tarrifCopy = new Tariff({...provAufwand});
当您将
provAufwand
传递给
关税
构造函数时,传递的参数不是对象的实际
,而是对象的
引用

对象
数组
传递给函数时,参数 是通过引用传递的

这意味着更改函数内部对象/数组的值会影响函数外部相同对象/数组的值

要解决此问题,您可以在创建新的
关税
对象时使用when passing
provaufand

const provAufwand= {
    SO: 1,
    HO5: 2,
    HO10: 3,
    HO20: 4
};
const tarrif = new Tariff({...provAufwand});
const tarrifCopy = new Tariff({...provAufwand});

这可以确保在创建类实例时传递完全不同的对象。

新关税(provAufwand)
中创建
Tarrif
TariffCopy
时是否声明了
provAufwand