使用 setter 方法更新现有对象值
Update existing object values using the setter method
我有一个使用 setter 方法的对象 model:
var obj = {
set model(object) {
//method's logic
}
}
我用以下值更新对象:
obj = {x:10, y: 20, p: 15};
现在对象看起来像:
obj = {
x:10,
y: 20,
p: 15
set model(object){
//method logic
}
};
请提示如何使用 setter 方法 更新 对象的现有值并处理一些数学运算。
例如,我调用 setter 方法并传递值:
obj.model = { x: { value: 33, operation: '*' },
z: { value: 75, operation: '+' },
p: { value: 4, operation: '%' } };
结果应该是return:
console.log(obj); // -> {x:330, y: 20, z: 75, p: 3}
obj = {x:10, y: 20, p: 15};
不是对象的 "passing" 参数 - 这是对 obj
本身的赋值(您正在覆盖 obj
的先前定义)!
试试看(就像你在下面做的几行一样):
obj.model = {x:10, y: 20, p: 15};
这是另一种处理方法。
var obj = {
set model(object) {
Object.keys(object).forEach(key => {
if (typeof obj[key] === 'undefined' || typeof object[key] !== 'object') {
obj[key] = typeof object[key] === 'object'
? object[key].value
: object[key];
} else {
obj[key] = eval(obj[key] + object[key].operation + object[key].value);
}
});
}
}
obj.model = {x:10, y: 20, p: 15};
obj.model = { x: { value: 33, operation: '*' },
z: { value: 75, operation: '+' },
p: { value: 4, operation: '%' } };
// Adding new value(s)
obj.model = { a: 123 };
console.log(obj); // -> {x:330, y: 20, z: 75, p: 3}
我有一个使用 setter 方法的对象 model:
var obj = {
set model(object) {
//method's logic
}
}
我用以下值更新对象:
obj = {x:10, y: 20, p: 15};
现在对象看起来像:
obj = {
x:10,
y: 20,
p: 15
set model(object){
//method logic
}
};
请提示如何使用 setter 方法 更新 对象的现有值并处理一些数学运算。 例如,我调用 setter 方法并传递值:
obj.model = { x: { value: 33, operation: '*' },
z: { value: 75, operation: '+' },
p: { value: 4, operation: '%' } };
结果应该是return:
console.log(obj); // -> {x:330, y: 20, z: 75, p: 3}
obj = {x:10, y: 20, p: 15};
不是对象的 "passing" 参数 - 这是对 obj
本身的赋值(您正在覆盖 obj
的先前定义)!
试试看(就像你在下面做的几行一样):
obj.model = {x:10, y: 20, p: 15};
这是另一种处理方法。
var obj = {
set model(object) {
Object.keys(object).forEach(key => {
if (typeof obj[key] === 'undefined' || typeof object[key] !== 'object') {
obj[key] = typeof object[key] === 'object'
? object[key].value
: object[key];
} else {
obj[key] = eval(obj[key] + object[key].operation + object[key].value);
}
});
}
}
obj.model = {x:10, y: 20, p: 15};
obj.model = { x: { value: 33, operation: '*' },
z: { value: 75, operation: '+' },
p: { value: 4, operation: '%' } };
// Adding new value(s)
obj.model = { a: 123 };
console.log(obj); // -> {x:330, y: 20, z: 75, p: 3}