ES6's Object.assign() function can be used to copy all of the enumerable properties from an existing Objecct instance to a new one.
This includes Symbol properties in addition to String ones.
Object rest/spread destructuring which is currently a stage 3 proposal provides an even simpler way to create shallow clones of Object instances:
Object.freeze makes an object immutable by preventing the addition of new properties, the removal of existing properties, and the modification of the enumerability, configurability, and writability of existing properties. It also prevents the value of existing properties from being changed. However, it does not work recursively which means that child objects are not automatically frozen and are subject to change.
The operations following the freeze will fail silently unless the code is running in strict mode. If the code is in strict mode, a TypeError will be thrown.
Convert object's values to array
You can convert its values to an array by doing:
Get the description of a specific property in an object
Object.keys(obj) returns an array of a given object's keys.
The Object.values() method returns an array of a given object's own enumerable property values, in the same order as that provided by a for...in loop (the difference being that a for-in loop enumerates properties in the prototype chain as well).