// 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);