Just JQuery's/underscore's extend(). Mixes the properties of all of the arguments after the first parameter into the first parameters. Takes an arbitrary number of objects as parameters.
Copies properties from the second object to the first object (that) iff the property does not exist in the first or is null.
Copies properties from the second object to the first iff the property exists in the first.
Returns a deep copy of the specified object
Returns true/false for whether the specified value is an Object, and works for Objects created in other frames as well. If the "pure" flag is "true" then isObject() should return true only if the value belongs exclusively to the Object type, not to any sub-type.