JSFiddle - React, Tailwind, and code Playground
Proxy: prop defaults
by Csaba Hellinger
JavaScript
function propDefaults(defaults) {
const handler = {
get (obj, prop, value) {
return obj[prop] || defaults[prop];
}
};
return new Proxy({}, handler);
}
function log() {
const isin = 'name' in myObj ? 'is in' : 'is not in';
console.log(`name = "${myObj.name}" (name ${isin} myObj)`);
}
const myObj = propDefaults({name: "noname"});
console.clear();
log();
myObj.name = 'Bob';
log();
delete myObj.name;
log();