| function Test1() { |
| this.x = 8; |
| this.y = 5; |
| this.z = 2; |
| var o = {".this": {x: 1}}; |
| var res; |
| with (o) { |
| res = this.x + (() => this.z)() + eval("this.x + (() => this.y)()"); |
| } |
| assertEq(res, 23); |
| } |
| new Test1(); |
| |
| function Test2() { |
| this.x = 8; |
| var o = {".this": {x: 1}}; |
| with (o) { |
| return eval("() => this.x"); |
| } |
| } |
| var fun = new Test2(); |
| assertEq(fun(), 8); |
| |
| function Test3() { |
| this.x = 8; |
| var o = {".this": {x: 1}}; |
| with (o) { |
| assertEq(this.x, 8); |
| } |
| } |
| new Test3(); |
| |
| function test4() { |
| var o = {".this": {x: 1}}; |
| with (o) { |
| return () => this; |
| } |
| } |
| assertEq(test4()(), this); |
| |
| function test5() { |
| var o = {".this": {x: 1}}; |
| with (o) { |
| return this; |
| } |
| } |
| assertEq(test5(), this); |
| |
| var global = this; |
| evaluate("with({}) { assertEq(this, global); }"); |
| eval("with({}) { assertEq(this, global); }"); |