testDirectProxyGet9.js (668B)
1 load(libdir + "asserts.js"); 2 3 var target = {x:5}; 4 var magic = false; 5 var returnValue = 42; 6 var handler = { 7 get(t, p) { 8 if (magic) { 9 Object.defineProperty(target, 'x', { 10 value: 42, 11 writable: false, 12 configurable: false 13 }); 14 if (returnValue != 42) { 15 gc(testGet, "shrinking"); 16 } 17 } 18 return returnValue; 19 } 20 }; 21 var proxy = new Proxy(target, handler); 22 23 function testGet(p) { 24 return p.x; 25 } 26 27 for (i = 0; i < 200; i++) { 28 assertEq(testGet(proxy), returnValue); 29 } 30 magic = true; 31 assertEq(testGet(proxy), returnValue); 32 returnValue = 41; 33 assertThrowsInstanceOf(function () { testGet(proxy) }, TypeError);