// Recursion through the get hook works; runaway recursion is checked. | |
load(libdir + "asserts.js"); | |
var hits = 0, limit = 10; | |
var proto = new Proxy({}, { | |
get(t, id, r) { | |
assertEq(r, obj); | |
if (hits++ >= limit) | |
return "ding"; | |
return obj[id]; | |
} | |
}); | |
var obj = Object.create(proto); | |
assertEq(obj.prop, "ding"); | |
hits = 0; | |
limit = Infinity; | |
assertThrowsInstanceOf(() => obj.prop, InternalError); | |
assertEq(hits > 10, true); |