For me the most common use cases for cloning are for logging, or a sanity check before crossing a wire (often for API responses and/or errors). So true clones aren't needed, same for prototype chains. What you do want to avoid is to have circular references plucked, and/or pull up error message/stack properties out of the prototype instance. I created an npm module (safe-clone-deep), and helped with another (fclone). I mostly just use fclone these days.