Надо использовать метод bind
const user={
id:1,
name:"Юрий",
group: 123
}
const keys= Object.keys(user).map(function (k){return k});
function changeProp(obj, prop){
obj["_"+prop] = obj[prop];
function getProp() {
return "=="+this["_"+prop];
}
function setProp(value) {
this["_"+prop]=value;
}
getProp.bind(obj);
setProp.bind(obj);
delete obj[prop];
Object.defineProperty(
obj,
prop,
{
get: getProp,
set:setProp
},
)
}
keys.map(
function(key){
changeProp(user, key)
}
)
console.log(user.name)
user.name='Bad Man';
console.log(user.name)
Output:
==Юрий
==Bad Man