Aren’t membranes incompatible with private data via WeakMaps?

Axel Rauschmayer rauschma at
Sat Nov 21 23:02:52 UTC 2015

Take, for example, the following class, which uses WeakMaps for its private data:

let _counter = new WeakMap();
let _action = new WeakMap();
class Countdown {
    constructor(counter, action) {
        _counter.set(this, counter);
        _action.set(this, action);
    dec() {
        let counter = _counter.get(this);
        if (counter < 1) return;
        _counter.set(this, counter);
        if (counter === 0) {

If you wrap an instance of `Countdown` with a revocable Proxy (e.g. when it is returned by a method inside a membrane) that resets its private state, because its `this` changes.

Right? If yes then I’d expect that to cause problems for code that uses WeakMaps for private data.

Dr. Axel Rauschmayer
axel at

More information about the es-discuss mailing list