build/ical.js
function(source, target) {
    for (var key in source) {
      var descr = Object.getOwnPropertyDescriptor(source, key);
      if (descr && !Object.getOwnPropertyDescriptor(target, key)) {
        Object.defineProperty(target, key, descr);
      }
    }
    return target;
  }
function(source, target) {
    for (var key in source) {
      var descr = Object.getOwnPropertyDescriptor(source, key);
      if (descr && !Object.getOwnPropertyDescriptor(target, key)) {
        Object.defineProperty(target, key, descr);
      }
    }
    return target;
  }
function ( source , target ) { for ( var key in source ) { var descr = Object . getOwnPropertyDescriptor ( source , key ) ; if ( descr && ! Object . getOwnPropertyDescriptor ( target , key ) ) { Object . defineProperty ( target , key , descr ) ; } } return target ; }
Poor-man's cross-browser object extension. Doesn't support all the
features, but enough for our usage. Note that the target's properties are
not overwritten with the source properties.

@example
var child = ICAL.helpers.extend(parent, {
"bar": 123
});

@param {Object} source     The object to extend
@param {Object} target     The object to extend with
@return {Object}           Returns the target.
Poor - man s cross - browser object extension . Doesn t support all the features but enough for our usage . Note that the target s properties are not overwritten with the source properties .