function f() { for (var i=0; i<100; i++) { var obj = {data: {id:1}}; } Object.defineProperty(obj, "id", { configurable: true, enumerable: false, get: function() { return this.data.id; } }); return obj.id; } assertEq(f(), 1); function f2() { for (var i=0; i<100; i++) { var obj = {data: {id:1}}; } Object.defineProperty(obj, "id", { configurable: true, enumerable: false, get: function() { return this.data.id; }, set: function(v) { this.data.id = v; } }); obj.id = 3; return obj.id; } assertEq(f2(), 3);