Если obj.a
равно 37, тогда obj.a.b
будет равно 37.b
, что не определено.Однако, если вы будете в порядке, если 37 будет результатом превращения чего-либо в примитив (например, путем конкатенации строк), тогда вы можете создать прокси.
Демо:
// Preparation
function setDefaultProperty(obj, defProp) {
return new Proxy(obj, {
get(target, prop) {
if (prop in target || typeof prop === "symbol") return target[prop];
return target[defProp];
}
});
}
var sink = setDefaultProperty({}, "_default");
sink._default = sink;
sink.valueOf = () => 37;
// Demo
var obj = {};
obj = setDefaultProperty(obj, "_default");
obj._default = sink;
console.log("" + obj.a.b.c.e); // 37
console.log("" + obj.what.ever); // 37