Question

Actuellement, j'essaie de créer une valeur readOnly pour ma classe afin que personne ne puisse modifier les variables et gâcher la classe.

Dans ma classe, les seules valeurs peuvent être soit 1, 0, true ou false et s'ils peuvent modifier à tout moment n'importe quoi, ils pourraient définir le var sur une valeur hors champ qui pourrait bloquer le code!

    let Bit1 = new Bit(1);

    Bit1.Value = "fdgdf" // <-- You Should Not be able to do this!!

    ...

Une façon dont j'ai pensé à un moyen de résoudre ce problème était de créer une fonction qui vous permet de modifier la valeur afin qu'elle ne soit pas hors de portée.

    Bit1.ChangeValue(true) // Accepted Value

    Bit1.ChangeValue("agjg") // Should throw Error: "Error: Value has to be ether a 1, 0 or an Boolean"

    Bit1.Value = "hbkij" // <-- You should not be able to do this!!

Mais comme vous pouvez le voir, vous pouvez toujours modifier la valeur d'origine sans erreur !

Bientôt, j'ai remarqué que j'avais besoin d'un Var en lecture seule. Je savais que javascript avait readOnly vars à cause de MDN mais je je ne sais pas comment faire readOnly Vars

S'il vous plaît, aidez !!

Informaitons supplémentaires

IDE : Codesandbox

Navigateur : Chrome

Code complet:

    class Bit {
      /**
       *
       * @param {(Boolean|Number)} Value A Byte Value (1, 0, true, false)
       */
      constructor(Value) {
        if (Value !== null) {
          if (typeof Value === Boolean) {
            this.Value = +Value;
          } else if (typeof Number) {
            if (Value === 1 || Value === 0) {
              this.Value = Value;
            } else {
              throw new Error("Error: Value has to be ether a 1, 0 or an Boolean");
            }
          } else {
            throw new Error("Error: Value has to be ether a 1, 0 or an Boolean");
          }
        } else {
          throw new Error("Error: Value has to be ether a 1, 0 or an Boolean");
        }
      }
    
      /**
       * @description Swiches the Bit (1 -> 0, 0 -> 1)
       */
      Switch() {
        this.Value = Boolean(this.Value) ? 0 : 1;
      }
    }
    
    //class Bytes {
    //  /**
    //   *
    //   * @param {Array} Bits Array Of up to 8 bits (1, 0, true, false, Bit)
    //   */
    //  constructor(Bits) {
    //
    //  }
    //}
    
-1
Errorbot1122 THE SECOND 18 nov. 2020 à 23:22

1 réponse

Meilleure réponse