Source code

Revision control

Copy as Markdown

Other Tools

// The global object can be the receiver passed to the get and set traps of a Proxy.
var global = this;
var proto = Object.getPrototypeOf(global);
var gets = 0, sets = 0;
try {
Object.setPrototypeOf(global, new Proxy(proto, {
has(t, id) {
return id === "bareword" || Reflect.has(t, id);
},
get(t, id, r) {
gets++;
assertEq(r, global);
return Reflect.get(t, id, r);
},
set(t, id, v, r) {
sets++;
assertEq(r, global);
return Reflect.set(t, id, v, r);
}
}));
} catch (e) {
global.bareword = undefined;
gets = 1;
sets = 1;
}
assertEq(bareword, undefined);
assertEq(gets, 1);
bareword = 12;
assertEq(sets, 1);
assertEq(global.bareword, 12);
reportCompare(0, 0);