function clone(v) {
    if (v === null || typeof v !== "object") {
        return v;
    }

    if (isArray(v)) {
        var arr = v.slice();
        for (var i = 0; i < v.length; i++) {
            arr[i] = clone(arr[i]);
        }
        return arr;
    }
    else {
        var obj = {};
        for (var k in v) {
            obj[k] = clone(v[k]);
        }
        return obj;
    }
}
function clone(v) {
    if (v === null || typeof v !== "object") {
        return v;
    }

    if (isArray(v)) {
        var arr = v.slice();
        for (var i = 0; i < v.length; i++) {
            arr[i] = clone(arr[i]);
        }
        return arr;
    }
    else {
        var obj = {};
        for (var k in v) {
            obj[k] = clone(v[k]);
        }
        return obj;
    }
}
function clone ( v ) { if ( v === null || typeof v !== "object" ) { return v ; } if ( isArray ( v ) ) { var arr = v . slice ( ) ; for ( var i = 0 ; i < v . length ; i ++ ) { arr [ i ] = clone ( arr [ i ] ) ; } return arr ; } else { var obj = { } ; for ( var k in v ) { obj [ k ] = clone ( v [ k ] ) ; } return obj ; } }
Recursively copies given object into a new object. Helper method for merge
Recursively copies given object into a new object . Helper method for merge