src/utils.js
function extend(destination, source, recursive) {
    destination = destination || {};
    source = source || {};
    recursive = recursive || false;

    for (var attrName in source) {
        if (source.hasOwnProperty(attrName)) {
            var destVal = destination[attrName];
            var sourceVal = source[attrName];
            if (recursive && isObject(destVal) && isObject(sourceVal)) {
                destination[attrName] = extend(destVal, sourceVal, recursive);
            } else {
                destination[attrName] = sourceVal;
            }
        }
    }

    return destination;
}
function extend(destination, source, recursive) {
    destination = destination || {};
    source = source || {};
    recursive = recursive || false;

    for (var attrName in source) {
        if (source.hasOwnProperty(attrName)) {
            var destVal = destination[attrName];
            var sourceVal = source[attrName];
            if (recursive && isObject(destVal) && isObject(sourceVal)) {
                destination[attrName] = extend(destVal, sourceVal, recursive);
            } else {
                destination[attrName] = sourceVal;
            }
        }
    }

    return destination;
}
function extend ( destination , source , recursive ) { destination = destination || { } ; source = source || { } ; recursive = recursive || false ; for ( var attrName in source ) { if ( source . hasOwnProperty ( attrName ) ) { var destVal = destination [ attrName ] ; var sourceVal = source [ attrName ] ; if ( recursive && isObject ( destVal ) && isObject ( sourceVal ) ) { destination [ attrName ] = extend ( destVal , sourceVal , recursive ) ; } else { destination [ attrName ] = sourceVal ; } } } return destination ; }
Copy all attributes from source object to destination object. destination object is mutated.
Copy all attributes from source object to destination object . destination object is mutated .