クラスプロパティ内のオブジェクト内のvuev2値は変更されましたが、変更されていません

acincognito

私はvuev2を使用してSPAを作成しています。vueコンポーネントのスクリプトセクションで次のようなOfferクラスを宣言しました。

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と呼ばれるカスタムクラスから初期化されたオブジェクトです。基本的にこれらには同じ値が含まれますが、Tariffは値の変更に対してオープンであり、BaseTariffの値は変更されません。

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

どこ

provAufwand= {
    SO: 1,
    HO5: 2,
    HO10: 3,
    HO20: 4
}

呼び出すときOffer.changeSAC(p1,p2)(P1、P2は経由して数入力にバインドされているv-model="p1"v-model="p2")の値がthis.BaseTariff.provAufwand.SO、私はコードでそれを変えることはありませんが、あまりにも、変更されました。何故ですか?私のコードのどこに接続されていますか?

アナ・リザ・パンダック

Tariff次のようなインスタンスを作成したと仮定します

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

次に、変更したときにBaseTariffまたはtariffCopyが変更される理由tariffは、それらが同じprovAufwandオブジェクトを参照しているためです。

コンストラクターに渡さprovAufwandれたとき、渡されたTariffパラメーターvalueはオブジェクトの実際はなく、オブジェクトに渡されreferenceました。

あなたが渡された場合objectまたはarray関数に、引数をされ、参照によって渡されます

これは、関数内のオブジェクト/配列の値を変更すると、関数外の同じオブジェクト/配列の値に影響することを意味します。

これを解決するには、新しいオブジェクトを作成するspread syntaxときに渡すprovAufwandときにを使用できTariffます。

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

これにより、クラスインスタンスを作成するときに完全に異なるオブジェクトを渡すことが保証されます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オブジェクトのプロパティの値は、Emberのローカルストレージで変更されていません

分類Dev

Htmlテンプレートにプロパティを追加すると、「オブジェクトではプロパティの追加または変更が許可されていません」というエラーが発生します。

分類Dev

MATLABオブジェクトのプロパティは表示されますが、変更できません

分類Dev

変更されたプロパティがタスク内でトリガーされていません

分類Dev

クラスオブジェクトを3つの異なるリストに追加しましたが、値は変更されていませんか?

分類Dev

QMLオブジェクトのプロパティがc ++から変更されましたが、結果が表示されません

分類Dev

Angular 7 [無効]ネストされたオブジェクトのプロパティ値が変更されたときに変更を検出しない

分類Dev

D3:データオブジェクトの値は変更されましたが、テーブルで更新されていません

分類Dev

プロジェクト内のEveyユーザーフォームのStartUpPositionを変更してくださいエラー:オブジェクトはプロパティをサポートしていません

分類Dev

オブジェクトのプロパティを変更し、反応性を維持しようとしています。プロパティまたはメソッド「vm」はインスタンスで定義されていませんが、レンダリング中に参照されます

分類Dev

Javaでストリーミングした後、オブジェクトプロパティの変更は保存されません

分類Dev

配列のオブジェクトプロパティを変更しましたが、ページでは変更していません

分類Dev

オブジェクトの2つのリストを比較して、特定のプロパティで新規、変更、更新されたものを探します

分類Dev

オブジェクトがrefという単語なしで別のクラスメソッドのパラメータとして渡されると、オブジェクトプロパティが変更されます。

分類Dev

バインドされたオブジェクトのプロパティの変更は、Vue.jsのUIに反映されません

分類Dev

Groovyクロージャは、委任されたオブジェクトの値を変更しません

分類Dev

Kivyブールオブジェクトのプロパティはチェックボックスで変更されません

分類Dev

ColumnオブジェクトのDefaultConstraintNameプロパティを変更することは許可されていません

分類Dev

VBA:ループ内のオブジェクトが「Nothing」になり、「オブジェクト変数またはブロック変数が設定されていません」というエラーが表示されます

分類Dev

React-小道具として渡されたオブジェクトのプロパティが変更された場合に関数を実行します

分類Dev

既存のオブジェクトの場合、他のオブジェクトを変更せずに新しく作成されたオブジェクトを追加します。ここでは、他のプロパティを失います。

分類Dev

オブジェクトの変更されたプロパティのみをシリアル化します

分類Dev

オブジェクトを含む配列では、1つのアイテムのプロパティを変更しても、オブジェクト自体は変更されません。

分類Dev

Angular 2- * ngFor with keysパイプは、オブジェクトが変更されても更新されません

分類Dev

EF:オブジェクト更新プロセスは1つのプロパティの値を変更していません

分類Dev

JS:プロパティの名前が変更されたオブジェクトを別のオブジェクトに分解します

分類Dev

Pythonスコープ:関数内のリストオブジェクトをコピーして複製を変更しましたが、元のオブジェクトが変更されています。どうして?

分類Dev

プロパティはオブジェクト内で正しく設定されていますが、外部からはアクセスできません

分類Dev

JavaScriptオブジェクトのプロパティは非常に興味深い方法で変更されます

Related 関連記事

  1. 1

    オブジェクトのプロパティの値は、Emberのローカルストレージで変更されていません

  2. 2

    Htmlテンプレートにプロパティを追加すると、「オブジェクトではプロパティの追加または変更が許可されていません」というエラーが発生します。

  3. 3

    MATLABオブジェクトのプロパティは表示されますが、変更できません

  4. 4

    変更されたプロパティがタスク内でトリガーされていません

  5. 5

    クラスオブジェクトを3つの異なるリストに追加しましたが、値は変更されていませんか?

  6. 6

    QMLオブジェクトのプロパティがc ++から変更されましたが、結果が表示されません

  7. 7

    Angular 7 [無効]ネストされたオブジェクトのプロパティ値が変更されたときに変更を検出しない

  8. 8

    D3:データオブジェクトの値は変更されましたが、テーブルで更新されていません

  9. 9

    プロジェクト内のEveyユーザーフォームのStartUpPositionを変更してくださいエラー:オブジェクトはプロパティをサポートしていません

  10. 10

    オブジェクトのプロパティを変更し、反応性を維持しようとしています。プロパティまたはメソッド「vm」はインスタンスで定義されていませんが、レンダリング中に参照されます

  11. 11

    Javaでストリーミングした後、オブジェクトプロパティの変更は保存されません

  12. 12

    配列のオブジェクトプロパティを変更しましたが、ページでは変更していません

  13. 13

    オブジェクトの2つのリストを比較して、特定のプロパティで新規、変更、更新されたものを探します

  14. 14

    オブジェクトがrefという単語なしで別のクラスメソッドのパラメータとして渡されると、オブジェクトプロパティが変更されます。

  15. 15

    バインドされたオブジェクトのプロパティの変更は、Vue.jsのUIに反映されません

  16. 16

    Groovyクロージャは、委任されたオブジェクトの値を変更しません

  17. 17

    Kivyブールオブジェクトのプロパティはチェックボックスで変更されません

  18. 18

    ColumnオブジェクトのDefaultConstraintNameプロパティを変更することは許可されていません

  19. 19

    VBA:ループ内のオブジェクトが「Nothing」になり、「オブジェクト変数またはブロック変数が設定されていません」というエラーが表示されます

  20. 20

    React-小道具として渡されたオブジェクトのプロパティが変更された場合に関数を実行します

  21. 21

    既存のオブジェクトの場合、他のオブジェクトを変更せずに新しく作成されたオブジェクトを追加します。ここでは、他のプロパティを失います。

  22. 22

    オブジェクトの変更されたプロパティのみをシリアル化します

  23. 23

    オブジェクトを含む配列では、1つのアイテムのプロパティを変更しても、オブジェクト自体は変更されません。

  24. 24

    Angular 2- * ngFor with keysパイプは、オブジェクトが変更されても更新されません

  25. 25

    EF:オブジェクト更新プロセスは1つのプロパティの値を変更していません

  26. 26

    JS:プロパティの名前が変更されたオブジェクトを別のオブジェクトに分解します

  27. 27

    Pythonスコープ:関数内のリストオブジェクトをコピーして複製を変更しましたが、元のオブジェクトが変更されています。どうして?

  28. 28

    プロパティはオブジェクト内で正しく設定されていますが、外部からはアクセスできません

  29. 29

    JavaScriptオブジェクトのプロパティは非常に興味深い方法で変更されます

ホットタグ

アーカイブ