JSFiddle - React, Tailwind, and code Playground
JavaScript
var class_type = {
'[object Date]' : Date,
'[object Array]' : Array,
'[object Object]' : Object
};
function shallowCopy(obj)
{
var type = Object.prototype.toString.call(obj);
if(!(type in class_type)){
throw 'Can\'t create';
}
var newObject = new class_type[type];
for(prop in obj){
newObject[prop] = obj[prop];
}
return newObject;
}
var dt = new Date(2000, 1, 1, 13);
console.log(dt.toString());
console.log(shallowCopy(dt).toString()); // выдает текущую дату
var a = { x: 1, y: 2, z: [1, 2, 3] };
var b = shallowCopy(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, 4]
var e = new Date();
var d = shallowCopy(e);
d.setYear(2015);
console.log(e.getFullYear()); // 2014