Using an ES6 Proxy for Private Variables

In this post I will show you how to use a Proxy.

The concept of a proxy is pretty simple. You provide triggers that run when you are getting or setting something in an object.

// private user object
const _user = {
    name: "User",
    age: 25,
    _address: "A place"
}

const traps = {
    get(target, prop) {
        if (prop[0] === "_") {
            return undefined;
        }
    }
}

const user = new Proxy(_user, traps);

console.log(user.name) // User
console.log(user.age) // 25
console.log(user._address) // undefined

As shown in the example above, Proxies can be used for stopping programs from accessing private variables.
They can also be used to stop programs from setting private variables.

// private user object
const _user = {
    name: "User",
    age: 25,
    _address: "A place"
}

const traps = {
    get(target, prop) {
        if (prop[0] === "_") {
            return undefined;
        }
    },
    set(target, prop, value) {
        if (prop[0] === "_") {
            throw new Error("You cannot set private variable");
        } else {
            target[prop] = value;
        }
    }
}

const user = new Proxy(_user, traps);

user.name = "Person";
user.age = 26;

user._address = "In the world"; // Error

You can read more about Proxies on the MDN.

Author: admin

Leave a Reply

Your email address will not be published.