// 'this' is lexically scoped in arrow functions var obj = { f: function (expected) { assertEq(this, expected); return a => this; } }; var g = obj.f(obj); assertEq(g(), obj); var obj2 = {f: obj.f}; var g2 = obj2.f(obj2); assertEq(g2(), obj2); assertEq(g(), obj);