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();