12 votes

Existe-t-il un moyen d'empêcher le remplacement des propriétés des objets JavaScript ?

Je voudrais rendre la structure d'un objet immuable, en empêchant ses propriétés d'être remplacées ultérieurement. Les propriétés doivent cependant être lisibles. Est-ce possible ?

Je suis sûr qu'il n'existe pas de fonctionnalités linguistiques (du type final en Java et readonly en C#) pour prendre en charge cette fonction, mais je me suis demandé s'il n'existait pas un autre mécanisme permettant d'obtenir le même résultat.

Je suis à la recherche de quelque chose de ce genre :

var o = {
    a: "a",
    f: function () {
        return "b";
    }
};

var p = o.a;        // OK
o.a = "b";          // Error
var q = o.f();      // OK
o.f = function () { // Error
    return "c"; 
};

2voto

jagged software Points 20

Vous pouvez maintenant forcer le gel d'une seule propriété de l'objet au lieu de geler l'objet entier. Vous pouvez réaliser cela avec Object.defineProperty et le paramètre writable: false

var obj = {
    "first": 1,
    "second": 2,
    "third": 3
};
Object.defineProperty(obj, "first", {
    writable: false,
    value: 99
});

Dans cet exemple, obj.first a maintenant sa valeur verrouillée à 99.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X