Pourquoi ce journal 3 deux fois? et comment cela devrait-il être fait?

Vous pouvez donc définir une propriété comme car.set ('propriété', 'valeur')

Puis renvoyer la valeur par car.get ('propriété')

Pour toute valeur / propriété

function Model() {}

Model.prototype = {
  get: function(property) {
    return this._value;
  },
  set: function(property, value) {
    this.property = value;
    this._value = value;
  }
};

var car = new Model();

car.set('name', 'ford');
car.set('age', 3);


console.log(
  car.get('name'),
  car.get('age')
);
-4
user3224271 17 juil. 2015 à 01:10

4 réponses

Meilleure réponse

Puisque vous utilisez la syntaxe à points pour définir les propriétés, les noms de propriété seront toujours "property" et "_value". Donc, si vous définissez plusieurs valeurs, la dernière remplacera la précédente.

Au lieu de cela, je pense que vous vouliez définir le nom de la propriété sur la valeur de la variable property. Vous pouvez utiliser la syntaxe des crochets pour y parvenir.

Model.prototype = {
  get: function(property){
      return this[property];
  },
  set: function (property, value){   
     this[property] = value;  
  }
};
1
Oriol 16 juil. 2015 à 22:14

Essayer:

    Model.prototype = {
      data: {},
      get: function(property) {
          return this.data[property];
      },
      set: function (property, value) {   
         this.data[property] = value;
      }
    };
0
Adam S. 16 juil. 2015 à 22:16

Cela devrait être fait de cette façon:

function Model() {}

Model.prototype = {
  get: function(property) {
    return this[property];
  },
  set: function(property, value) {
    this[property] = value;
  }
};

var car = new Model();

car.set('name', 'ford');
car.set('age', 3);


console.log(
  car.get('name'),
  car.get('age')
);
0
c-smile 16 juil. 2015 à 22:15

Votre classe Model n'a qu'une seule propriété _value qui est remplacée une fois que vous avez défini age.

Vous pouvez à la place stocker vos paires propriété / valeur dans un objet comme celui-ci:

function Model() {
  this._storage = {};
}

Model.prototype.get = function(property) {
  return this._storage[property];
}

Model.prototype.set = function(property, value) {
  this._storage[property] = value;
}
0
Richard Kho 16 juil. 2015 à 22:14