function normalizeAndCompletePropertyDescriptor(attributes) {
  if (attributes === undefined) { return undefined; }
  var desc = toCompletePropertyDescriptor(attributes);
  // Note: no need to call FromPropertyDescriptor(desc), as we represent
  // "internal" property descriptors as proper Objects from the start
  for (var name in attributes) {
    if (!isStandardAttribute(name)) {
      Object.defineProperty(desc, name,
        { value: attributes[name],
          writable: true,
          enumerable: true,
          configurable: true });
    }
  }
  return desc;
}
function normalizeAndCompletePropertyDescriptor(attributes) {
  if (attributes === undefined) { return undefined; }
  var desc = toCompletePropertyDescriptor(attributes);
  
  
  for (var name in attributes) {
    if (!isStandardAttribute(name)) {
      Object.defineProperty(desc, name,
        { value: attributes[name],
          writable: true,
          enumerable: true,
          configurable: true });
    }
  }
  return desc;
}
function normalizeAndCompletePropertyDescriptor ( attributes ) { if ( attributes === undefined ) { return undefined ; } var desc = toCompletePropertyDescriptor ( attributes ) ; // Note: no need to call FromPropertyDescriptor(desc), as we represent // "internal" property descriptors as proper Objects from the start for ( var name in attributes ) { if ( ! isStandardAttribute ( name ) ) { Object . defineProperty ( desc , name , { value : attributes [ name ] , writable : true , enumerable : true , configurable : true } ) ; } } return desc ; }
Returns a fresh property descriptor that is guaranteed
to be complete (i.e. contain all the standard attributes).
Additionally, any non-standard enumerable properties of
attributes are copied over to the fresh descriptor.

If attributes is undefined, returns undefined.

See also: http://wiki.ecmascript.org/doku.php?id=harmony:proxies_semantics
Returns a fresh property descriptor that is guaranteed to be complete ( i . e . contain all the standard attributes ) . Additionally any non - standard enumerable properties of attributes are copied over to the fresh descriptor .