code: function(val) {
        var seed;
        if (_.isArray(val)) {
          seed = [];
        } else if (_.isObject(val)) {
          seed = {};
        } else {
          return val;
        }
        return $.extend(true, seed, val);
      }
docs: Deep clones the attributes. There should be no functions in the attributes
  @param val {Object|Array|Basic Data Type} a non-function value
  @return the clone
  @private
  @method __cloneVal