How can I use setters with mutating objects?

I am trying to remake/make a better version of Map for utility, but how do I fix this issue with my code?

var MyMap = function(object) {
    var sy = {
        objectLike: {},
        entries: [],
        keys: [],
        values: []
    };
    var thisObj = {
        get entries() {
            return sy.entries;
        },
        set entries(value) {
            sy.entries = value;
            for(let i = 0; i < value.length; i++) {
                sy.objectLike[value[i][0]] = value[i][1];
                sy.keys[i] = value[i][0];
                sy.values[i] = value[i][1];
            }
        },
        get objectLike() {
            return sy.objectLike;
        },
        set objectLike(value) {
            thisObj.entries = Object.entries(value);
        },
        get keys() {
            return sy.keys;
        },
        set keys(value) {
            thisObj.entries = thisObj.entries.map((val, index) => [value[index], val[1]]);
        },
        get values() {
            return sy.values;
        },
        set values(value) {
            thisObj.entries = thisObj.entries.map((val, index) => [val[0], value[index]]);
        }
    };
    
    if(object instanceof Map) {
        thisObj.entries = object.entries;
    }
    else if(object instanceof Array) {
        thisObj.entries = object;
    }
    else if(object instanceof Object) {
        thisObj.objectLike = object;
    }
    else {
        throw new TypeError(`${object} is not object-like`);
    }
    this.prototype = thisObj;
    return thisObj;
};

So, here’s a brief explanation of what my code is doing.

sy is the internal variable of the forms objectLike, entries, keys and values
thisObj is being set to the prototype and return value of the function, so you can call it with or without new.

    if(object instanceof Map) {
        thisObj.entries = object.entries;
    }
    else if(object instanceof Array) {
        thisObj.entries = object;
    }
    else if(object instanceof Object) {
        thisObj.objectLike = object;
    }
    else {
        throw new TypeError(`${object} is not object-like`);
    }

The code above converts an Object, Array or Map into a MyMap

am using getters and setters in my code so that when I change one of the forms, the others also change.

I did not add any methods yet, so that I can explain the issue that is interfering.

And it seems to be working properly until I mutate one of the objects.

var x = new MyMap({
   number: 123,
   message: "Hello World!",
   isCool: true
});
console.log(x.objectLike.number); // 123
x.values[0] = 34;
console.log(x.objectLike.number); // still 123

The issue is that this way doesn’t invoke [[Set]] and instead removes the setter and getter. You would instead have to do this:

var x = new MyMap({
    number: 123,
    message: "Hello World!",
    isCool: true
});
console.log(x.objectLike.number); // 123
x.values = [34, "Hello World!", true];
console.log(x.objectLike.number); // 34

to invoke [[Set]] and change the other values which is not very convenient, and not that reliable for utility. Is there a way to make sure [[Set]] works while using mutation?