const button = document.querySelector('.test')
const updateProp = () => {
const confirmResult = confirm(
'Вы действительно хотите изменить значение ключа у объекта или получить данный объект в консоль?'
);
if (!confirmResult) {
console.log('Вы отменили данное действие');
return;
}
const promptResult1 = prompt('Введите желаемый ключ');
if (!promptResult1.includes('_')) {
const promptResult2 = prompt('Введите желаемое значение');
proxy[promptResult1] = promptResult2
}
console.log(proxy[promptResult1])
}
button.addEventListener('click', updateProp)
const person = {
name: 'Maxim',
job: 'Junior Fronted-Developer',
age: 15
}
const handler = {
get(target, props) {
let arr = props.split('_').map((el) => (`${el}: ${target[el] ?? 'Такого ключа не существует'}`));
return arr.join(', ');
},
set(target, key, prop) {
if (!target[key]) {
console.log('Не верная запись');
return;
}
if (prop === null) {
console.log('Значение не указано');
return;
}
const confirmResult = confirm(
`Подтвердить изменение данного ключа (${key}) на значение ${prop}?`
)
if (!confirmResult) {
console.log('Действие отменено');
return;
}
switch (key) {
case 'age':
if (prop <= 0 || prop > 100) {
console.log(`Слишком ${prop > 100 ? 'высокий' : 'маленький'} возраст`);
return;
}
target[key] = prop;
return;
default:
target[key] = prop;
}
}
}
const proxy = new Proxy(person, handler);