javascript获取/设置属性/值

时间:2015-07-16 22:10:24

标签: javascript

为什么将这个log 3剂量两次?应该怎么做?

所以你可以设置像car.set('property','value')

这样的属性

然后通过car.get('property')

返回值

任何值/属性

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 个答案:

答案 0 :(得分:1)

由于您使用点语法设置属性,因此属性名称将始终为"property""_value"。因此,如果您设置了多个值,则最后一个将覆盖前一个值。

相反,我认为您希望将属性名称设置为property变量中的值。您可以使用括号语法来实现此目的。

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

答案 1 :(得分:0)

您的Model课程只有一个_value属性,在您设置age后会被覆盖。

您可以将属性/值对存储在如下对象中:

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

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

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

答案 2 :(得分:0)

应该这样做:



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')
);




答案 3 :(得分:0)

尝试:

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