You mean here?
- ((abCopy.deep === b.deep)? "not" : ""
)
If the deep objects are equal (i.e: the same object, as opposed to copies with the same properties), then the test fails.
I'm trying to make a deep copy of an object here, copying all of its properties over to a completely separate new object. When you compare two objects with the === operator, it tells you if they refer to the same object, or to different objects. The copy would be successful if the objects had identical properties all the way, but were not the same object (i.e: referring to the same block of memory).
For example, if I made a true deep copy of an object, I could change its properties without affecting the original - whereas, if I just get a new reference to the same object, then whenever I change a property in the "copy", the change would also occur in the "original".
This is an important distinction if, for example, you have a set of defaults you want to remain untouched while copies of those defaults may change.
If the change to the original object is reflected in the copy here, then the copy isn't really a copy, just a reference to the same object (which is the way JS handles objects, by defaults - by reference).