Frame-this-05.js (640B)
1 // Frame.this and evalInFrame in the global scope. 2 var g = newGlobal({newCompartment: true}); 3 g.eval("x = 4; this['.this'] = 222;"); 4 var dbg = new Debugger(g); 5 var res; 6 dbg.onDebuggerStatement = function (frame) { 7 res = frame.eval("this.x").return; 8 res += frame.this.unsafeDereference().x; 9 }; 10 g.eval("debugger;"); 11 assertEq(res, 8); 12 13 // And inside eval. 14 g.eval("x = 3; eval('debugger')"); 15 assertEq(res, 6); 16 g.eval("x = 2; eval('eval(\\'debugger\\')')"); 17 assertEq(res, 4); 18 19 // And inside arrow functions. 20 g.eval("x = 1; (() => { debugger; })()"); 21 assertEq(res, 2); 22 g.eval("x = 5; (() => { eval('debugger'); })()"); 23 assertEq(res, 10);