Ah yes errors. It should probably have similar semantics to how
defineProperties works now...attempting each property and holding errors
until the end, no? Same for assign.

function mixin(target, source){
  if (Type(target) !== 'Object') throw new TypeError ("target must be an
object");
  if (Type(source) !== 'Object') throw new TypeError("source must be an
object");

  var error;
  Object.keys(source).forEach(function(key){ // or getOwnPropertyNames?
    try {
      Object.defineProperty(target, key,
Object.getOwnPropertyDescriptor(source, key));
    } catch (e) {
      error || (error = e);
    }
  });

  if (error) throw error;
  return target;
}

On Wednesday, December 12, 2012, Andrea Giammarchi wrote:
>
>
> also thinking about try/catch to avoid mixin overwrite ... I believe it's
> OK if that throws an error but then it should throw regardless if the
> target object had already that property defined ?
>
>
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to