मैं यह पहचानने के लिए किसी वस्तु को लपेटने की कोशिश कर रहा हूं कि इसे कौन बदल रहा है। मैंने इसे Proxy ऑब्जेक्ट के साथ करने का प्रयास किया है, लेकिन मुझे एक अजीब त्रुटि मिल रही है:

const wrap = object => {
    const handler = {
        get(obj, prop) {
            return wrap(obj[prop])            
        },
        set(obj, prop, value) {
            debugger;
            return Reflect.set(obj, prop, value)
        }
    };
    return new Proxy(object, handler)
}

मैं obj = wrap(obj) चलाता हूं, और फिर अपना कार्य शुरू करता हूं, लेकिन फिर एक त्रुटि फेंक दी जाती है:

TypeError: Cannot create proxy with a non-object as target or handler

मैं क्या गलत कर रहा हूं?

0
Yinon 16 सितंबर 2018, 16:01

1 उत्तर

सबसे बढ़िया उत्तर

यदि obj की संपत्ति कोई वस्तु नहीं है, तो रिकर्सिवली रैपिंग काम नहीं करेगी। जाँच कर रहा है कि obj एक वस्तु है या नहीं:

const wrap = object => {
    const handler = {
        get(obj, prop) {
            return wrap(obj[prop])            
        },
        set(obj, prop, value) {
            debugger;
            return Reflect.set(obj, prop, value)
        }
    };
    return _.isObject(object) ? new Proxy(object, handler) : object
}
0
Yinon 16 सितंबर 2018, 17:17