bug703157.js (1016B)
1 // Define a test object 2 var test = {x:1,y:2}; 3 4 // Put the object into dictionary mode by deleting 5 // a property that was not the last one added. 6 delete test.x; 7 8 // Define a an accessor property with a setter that 9 // itself calls Object.defineProperty 10 Object.defineProperty(test, "foo", { 11 get: function() { return 1; }, 12 set: function(v) { 13 Object.defineProperty(this, "foo", { value: v }); 14 // Prints the correct object descriptor 15 assertEq(this.foo, 33); 16 }, 17 configurable: true 18 }); 19 20 // Add another property, so generateOwnShape does not replace the foo property. 21 test.other = 0; 22 23 // This line prints 1, as expected 24 assertEq(test.foo, 1); 25 26 // Now set the property. This calls the setter method above. 27 // And the setter method prints the expected value and property descriptor. 28 test.foo = 33; 29 30 // Finally read the newly set value. 31 assertEq(test.foo, 33); 32 33 // Check that enumeration order is correct. 34 var arr = []; 35 for (var x in test) arr.push(x); 36 assertEq("" + arr, "y,other");