Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
function typeOf(type) {
    if ((typeof(type) !== 'undefined') && (typeof(type) !== 'boolean') && (typeof(type) !== 'number') && (typeof(type) !== 'string') && (typeof(type) !== 'function')) {
        if (Object.prototype.toString.call(type) === '[object Array]') {
            return 'array';
        } else if (Object.prototype.toString.call(type) === '[object Null]') {
            return 'null';
        } else if ((Object.prototype.toString.call(type) === '[object Arguments]') || Object.prototype.toString.call(type) === '[object NodeList]') {
            return 'array-like';
        } else if (Object.prototype.toString.call(type) === '[object Object]') {
            return 'object';
        } else if (Object.prototype.toString.call(type) === '[object Date]') {
            return 'date';
        }
    } else {
        return typeof(type);
    }
}
function shadowCopy(object) {
    
    if (typeOf(object) === 'array') {
        var newArray = object.slice((0));
        return newArray;
    } else if (typeOf(object) === 'object') {
        var newObj = {};
        for (var key in object) {
            newObj[key] = shadowCopy(object[key]);
        }
        return newObj;
    } else if (typeOf(object) === 'date') {
        return new Date(object.getTime());
    } else {
        return object;
    }
}
var a = { x: 1, y: 2, z: [1, 2, 3], w: new Date(2014, 1, 1, 12, 0, 0) };
var b = shadowCopy(a); // b — это отдельный объект
b.x = 10;
console.log(a.x); // 1
// a.z и b.z указывают на разные массивы: 
b.z.push(4);
console.log(a.z); // [1, 2, 3]
// a.w и b.w независимы друг от друга
b.w.setYear(2015);
console.log(a.w.getYear()); // 2014
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
fxslokerpro
0viewers