function incrementField(item, field) {
const value = item[field]; // 조회
const newValue = value + 1; // 바꾸기
const newItem = objectSet(item, field, newValue); // 설정
return newItem;
}
function halveField(item, field) {
const value = item[field]; // 조회
const newValue = value / 2; // 바꾸기
const newItem = objectSet(item, field, newValue); // 설정
return newItem;
}
function incrementField(item, field) {
return update(item, field, (value) => (value + 1))
}
function halveField(item, field) {
return update(item, field, (value) => (value / 2))
}
function update(object, key, modify) {
const value = object[key];
const newValue = modify(value);
const newObject = objectSet(object, key, newValue);
}
update()에 전달하는 함수는 값 하나를 인자로 받아 객체에 적용한다. (외과 수술 같다고 함)
update() 동작과정 톺아 보기
const shoes = {
name: "shoes",
quantity: 3,
price: 7
}
update(shoes, 'quantity', (value) => (value * 2)))
const value = object[key]
키를 가지고 객체에서 값을 조회
→ { name: "shoes", quantity: 3, price: 7 }
const newValue = modify(value)
현재 값으로 modify()를 불러 새로운 값을 생성
→ modify(3) = 6
const newObject = objectSet(object, key, newValue)
복사본 생성
→ { name: "shoes", quantity: 6, price: 7 }