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);