0
votes

JS - Ajout de la clé à une variable l'ajoute à toutes les variables créées en affectation chaînée

J'ai créé un objet et l'a attribué à 3 variables comme si SO xxx pré>

a également essayé p> xxx pré>

alors j'ai essayé d'ajouter un clé de l'une des variables. Cette clé n'est spécifique que sur cette variable et le reste de l'objet est identique pour toutes les variables. P>

longChartOptions.aspectRatio = 3;


1 commentaires

En JavaScript lorsque vous définissez un objet égal à un autre, vous ne créez une référence que sur l'objet, pas une copie.


3 Réponses :


4
votes

Faites une fonction qui renvoie l'objet et appelez cette fonction lors de la définition de chaque variable:

scatterOptions = { /* ... */ };
longChartOptions = scatterOptions; // references same object
barChartOptions = longChartOptions; // references same object
// so in the end, scatterOptions === barChartOptions


0 commentaires

2
votes

Vous pouvez utiliser l'opérateur de répandre pour copier un objet à une autre variable.

var barChartOption = {...longChartOptions} = {...scatterOptions} = {
    legend: {
        display: false
    },
    scales: {
      // ...
    }
};


0 commentaires

1
votes

Le problème est que toutes les variables sont pointées sur le même bloc de mémoire. Vous pouvez utiliser l'opérateur ES6 Spread qui créera des instances différentes.

var barChartOptions, longChartOptions, scatterOptions;
{...barChartOptions} = {...longChartOptions} = {...scatterOptions} = {
    legend: {
        display: false
    },
    scales: {
        ...
    }
};


0 commentaires