0

別のオブジェクトを格納するオブジェクトを作成する必要があります。ビッグ オブジェクトの各プロパティには、「値」と「コールバック」の 2 つのプロパティがあります。

let bigObj = {
    first: {
        value: true,
        callback: () => {}
    },
    second: {
        value: false,
        callback: () => {}
    }, {...}
}

bigObj.first / bigObj.first = "false" を使用して value プロパティを取得および変更できるようにしたいと考えています。

プロパティ「値」が変更されるたびに、そのコールバック関数を呼び出したいと思います。

これが私がしたことです

var proxy = new Proxy({
    first: {
        value: true,
        callback: () => {}
    }
}, {
    get(target, key) {
        return key in target ? target[key].value : null;
    },
    set(target, key, value) {
        target[key] ? target[key].value = value : target[key] = {value, callback: () => {}};
        key !== 'callback' && target[key].callback();
        return true;
    }
});

問題は、コールバック プロパティを変更できないことです。

proxy.first.callback = () => console.log('new cb'); // won't do anything.

コードを変更して機能させる方法について何かアイデアはありますか?

ありがとうございました。

4

1 に答える 1