function t1() { assertEq(thisValue, this); } thisValue = {}; var f1 = t1.bind(thisValue); f1() f1() //////////////////////////////////////////////////////////// function t2() { bailout(); } var f2 = t2.bind(thisValue); f2() f2() //////////////////////////////////////////////////////////// function test3() { function i3(a,b,c,d) { bailout(); } function t3(a,b,c,d) { i3(a,b,c,d); } var f3 = t3.bind(thisValue); for (var i=0;i<10; i++) { f3(1,2,3,4) f3(1,2,3,4) } } test3(); test3(); //////////////////////////////////////////////////////////// function test4() { this.a = 1; var inner = function(a,b,c,d) { bailout(); } var t = function(a,b,c,d) { assertEq(this.a, undefined); inner(a,b,c,d); assertEq(this.a, undefined); } var f = t.bind(thisValue); for (var i=0;i<5; i++) { var res = f(1,2,3,4) var res2 = new f(1,2,3,4) assertEq(res, undefined); assertEq(res2 == undefined, false); } } test4(); test4(); //////////////////////////////////////////////////////////// function test5() { this.a = 1; var inner = function(a,b,c,d) { assertEq(a, 1); assertEq(b, 2); assertEq(c, 3); assertEq(d, 1); bailout(); assertEq(a, 1); assertEq(b, 2); assertEq(c, 3); assertEq(d, 1); } var t = function(a,b,c,d) { inner(a,b,c,d); } var f = t.bind(thisValue, 1,2,3); for (var i=0;i<5; i++) { f(1,2,3,4) } } test5(); test5(); //////////////////////////////////////////////////////////// function test6() { function i6(a,b,c,d) { if (a == 1) bailout(); } function t6(a,b,c,d) { i6(a,b,c,d); } var f6 = t6.bind(thisValue, 1); f6(1,2,3,4) f6(0,2,3,4) } test6(); test6();