Frame-this-01.js (703B)
1 // Frame.prototype.this in strict-mode functions, with primitive values 2 3 var g = newGlobal({newCompartment: true}); 4 var dbg = new Debugger(g); 5 var hits = 0; 6 dbg.onDebuggerStatement = function (frame) { 7 hits++; 8 assertEq(frame.this, g.v); 9 }; 10 11 g.eval("function f() { 'use strict'; debugger; }"); 12 13 g.eval("Boolean.prototype.f = f; v = true; v.f();"); 14 g.eval("f.call(v);"); 15 g.eval("Number.prototype.f = f; v = 3.14; v.f();"); 16 g.eval("f.call(v);"); 17 g.eval("String.prototype.f = f; v = 'hello'; v.f();"); 18 g.eval("f.call(v);"); 19 g.eval("Symbol.prototype.f = f; v = Symbol('world'); v.f();"); 20 g.eval("f.call(v);"); 21 g.eval("v = undefined; f.call(v);"); 22 g.eval("v = null; f.call(v);"); 23 24 assertEq(hits, 10);