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