class Foo { foo = 0; test(other) { return [ this.foo++, this.foo, ++this.foo, this.foo, other.obj.foo++, other.obj.foo, ++other.obj.foo, other.obj.foo, ]; } } const f = new Foo; const results = f.test({ obj: f }); expect(results[0]).toBe(0); expect(results[1]).toBe(1); expect(results[2]).toBe(2); expect(results[3]).toBe(2); expect(results[4]).toBe(2); expect(results[5]).toBe(3); expect(results[6]).toBe(4); expect(results[7]).toBe(4);