Разве неправильно использовать auto_ptr с новым символом [n]

Если 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

14
задан David Sykes 4 November 2008 в 09:31
поделиться