Source code
Revision control
Copy as Markdown
Other Tools
with ({}) {}
function makeObjWithFunctionGetter(n) {
var o = {};
Object.defineProperty(o, "x", {
get() { return n; }
});
return o;
}
function makeObjWithProxyGetter() {
var inner = () => "proxy";
var proxy = new Proxy(inner, {});
var o = {};
Object.defineProperty(o, "x", {
get: proxy
});
return o;
}
function makeObjWithBoundGetter() {
var inner = () => "bound";;
var bound = inner.bind({});
var o = {};
Object.defineProperty(o, "x", {
get: bound
});
return o;
}
function foo(o) { return o.x; }
for (var i = 0; i < 100; i++) {
foo(makeObjWithFunctionGetter(i));
}
assertEq(foo(makeObjWithProxyGetter()), "proxy");
assertEq(foo(makeObjWithBoundGetter()), "bound");