Skip to content

Instantly share code, notes, and snippets.

@DavidBruant
Created October 8, 2012 14:18
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save DavidBruant/3852761 to your computer and use it in GitHub Desktop.
Save DavidBruant/3852761 to your computer and use it in GitHub Desktop.
function makeMembrane(){
var revokableWrappingHandler = new Proxy.revokable({}, {
get: function(target, name){
return Reflect.call.bind(wrap(Reflect[name]));
}
});
var revoke = revokableWrappingHandler.revoke;
var wrappingHandler = revokableWrappingHandler.proxy;
var un2wrapped = new WeakMap();
var wrap = function wrap(x){
if(Object(x) !== x)
return x;
var wrapped = un2wrapped.get(x);
if(wrapped)
return wrapped;
wrapped = new Proxy(x, wrappingHandler);
un2wrapped.set(x, wrapped);
return p;
};
return {
revoke: revoke,
wrap: wrap
};
};
@tvcutsem
Copy link

On line 22, return p; should probably be return wrapped;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment