Those are interesting answers from both of you - Thanks.
Larry's answer is indeed a type of use I can imagine :-) I was vaguely thinking about data from quantitative chemical analysis, where the lab routinely takes parallel measurements, and where batch number and name of the technical staff will be entered together with that particular run of tests. If a value had been entered incorrectly it would be useful to have shallow copies so the correction did not have to be repeated everywhere the value was used, for instance when calculating the mean. Such data would also often be displayed in more ways than one - only in the old days when I was handling that kind of data I was counting myself lucky to have a spreadsheet and not just graph paper and colored ball pens. There was no quick way to correct the pen and paper version, in a world where Tippex was banned for quality assurance reasons.
As to Bob's answer, thanks for the reminder about array.slice. I could certainly use it more than I have.
1) is of course correct. I don't think I've used null values yet, but a general function should also be able to take care of those.
2) Point taken. KA mainly teaches inheritance in the advanced section, so I've spent much more time playing with those and prototype chains than the smaller literals. Additionally, nearly all the objects I've created have had an x or an y, or PVector and have been animated. Making shallow copies of those haven't crossed my mind because animating a copy together with the original would mean one was drawn on top of the other.
However, since I occasionally go wild with loops and objects in arrays I know I need to learn to utilize more light weight solutions.
3) I'll have to explore this.
4) Not sure what that means in this setting. Shallow copies do not reference each other - both copy and original reference a location which holds the value. I know that interacting objects of different prototypes or different object literals can become a tangled mess. To avoid it I try to ensure a 'look but don't touch' approach. I write methods that look up information on another object, but only changes itself. Is this what you mean by 'cycles should be handled..."? If I have to use (look up) an object in a method before that object has been declared I create a parameter and pass the object to the method. It is quite possible that I have totally misunderstood what you are saying.
5) I found several references to the JSON stringify and parse method of making a deep copy online, but didn't get it to work in a JS program on KA. Now I see that there is a thread about it in the Help center from 6 years ago, so I'll see if I can make use of some of the suggestions there. The alternative is to do it in a web page, I think.