function foo(x, y) { var res = 0; for (var i = 0; i < 10; i++) { res += x.f + y[i]; } return res; } var x = {f:0}; var y = Array(10); for (var i = 0; i < 10; i++) { if (i == 5) Object.defineProperty(Object.prototype, 5, {get: function() { x.f = 10; return 5}}); else y[i] = i; } assertEq(foo(x, y), 85);