| var testCase = function (actual, expected, message) { |
| if (actual !== expected) { |
| throw message + ". Expected '" + expected + "', but was '" + actual + "'"; |
| } |
| }; |
| |
| function Dog(name) { |
| this.name = name; |
| this.getName = () => this.name; |
| this.getNameNestingLevel1 = () => () => this.name; |
| this.getNameNestingLevel2 = () => () => () => this.name; |
| } |
| |
| var d = new Dog("Max"); |
| |
| noInline(d.getName()); |
| noInline(d.getNameNestingLevel1()()); |
| noInline(d.getNameNestingLevel2()()()); |
| |
| for (var i=0;i<10000; i++) { |
| testCase(d.getName(), d.name, "Error: this is not lexically binded inside of the arrow function #1"); |
| testCase(d.getNameNestingLevel1()(), d.name, "Error: this is not lexically binded inside of the arrow function #2"); |
| testCase(d.getNameNestingLevel2()()(), d.name, "Error: this is not lexically binded inside of the arrow function #3"); |
| } |