为什么将这个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')
);
答案 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;
}
};