可能不符合题意,但是确实是 "undefined"
const a = "undefined";
Object.defineProperties(String.prototype, {
b: { value: "undefined" },
c: { value: 1 },
});
console.log(a); // undefined
console.log(a.b); // undefined
console.log(a.b.c); // 1
补充,"undefined" 不是对象,而 "Object.defineProperty" 和 "Proxy" 都只能用于对象,所以如果 "a" 真是
"undefined" 是不可能实现的;
如果自定义一个对象,让 "console.log" 输出这个对象的时候打印 "undefined",不同浏览器的 "console.log"
实现不同,而且不一定会调用 "toString()" 或者 "valueOf()":
«Console API in FF calls "toString()" on the argument only if the argument
type is not one of "{ undefined, null, object, set, map }" types. It doesn't
always call "toString()" or "valueOf()" methods.»