2.1.12 [ECMA-262-1999] Section 184.108.40.206, [[Put]] (P, V)
When the [[Put]] method of O is called with property P and value V, the following steps are taken:
Call the [[CanPut]] method of O with name P.
If Result(1) is false, return.
If O doesn't have a property with name P, go to step 6.
Set the value of the property to V. The attributes of the property are not changed.
Create a property with name P, set its value to V and give it empty attributes.
__Let q be the same value as O.__
__Let q be the value of the [[Prototype]] property of q.__
__If q is null, return.__
__If q doesn't have a property with name P, go to step 6.2.__
__If the property of q with name P does not have the DontEnum attribute, return.__
__Give the property with the name P of O the DontEnum attribute.__
In JScript 5.x a property created using [[Put]] is given the DontEnum attribute if it shadows a prototype property with the same name that already has the DontEnum attribute.