Shallow clone: Only the value of the original object itself can be cloned, not its inherited values
function clone(origin) { return Object.assign({}, origin); }
Deep clone: clone the object's own value and the integrated value
function clone(origin) { let originProto = Object.getPrototypeOf(origin); return Object.assign(Object.create(originProto), origin); }