// Getting a property that's inherted from a proxy calls the proxy's get handler. var handler = { get(t, id, r) { assertEq(this, handler); assertEq(t, target); assertEq(id, "foo"); assertEq(r, obj); return "bar"; }, getOwnPropertyDescriptor(t, id) { throw "FAIL"; } }; var target = {}; var proto = new Proxy(target, handler); var obj = Object.create(proto); assertEq(obj.foo, "bar"); // Longer proto chain: same result. var origObj = obj; for (var i = 0; i < 4; i++) obj = Object.create(obj); assertEq(obj.foo, "bar"); // Chain of transparent proxy wrappers: same result. obj = origObj; for (var i = 0; i < 4; i++) obj = new Proxy(obj, {}); assertEq(obj.foo, "bar");