indexedDB and "_proto_" viewed in Developer Tools

I don’t have permission to delete my own question but, after learning a bit more, I think this likely adds no value at all. I was misunderstanding how serialization works in general. If you can delete this question , please do.

I’m likely slow to catch on to this and this may be a really stupid question, but has something changed in the way objects are stored in indexedDB?

I notice now that in the developer tools storage tab that _proto_ appears with the stored objects. I thought that objects were cloned/serialized before being written to the database such that, regardless of how they were created, they were independent.

For example, when a database I’ve been working on is first created, some mapping objects are added; and, since several have the exact same layout/structure, a reference to a single object (repeated_object) is used repeatedly as shown below.

When the page is loaded, the mapping data is read into RAM and used to manage the assignment of database keys. Unless I am really confused, it appears that prop_3 through prop_7 retain the common reference to repeated_object (even though it no longer exists) when later extracted from the database upon reload of the page, such that if one of the properties in prop_3 is updated, the same property is updated in prop_3 through prop_7.

Is this the way it is supposed to work? Does _proto_ restore the shared reference when the data is retrieved/de-serialized? I expected prop_3 through prop_7 to no longer share a common reference after being written and read from the database. How is a reference to an object that is not written to the database serialized and retained?

If this is accurate, can the objects be written to the database in such a manner that these types of shared references will not be preserved? I know I could just not use a reference and instead repeat the object itself each time or make a deep copy of it in some manner. In fact, after I did so, all the properties are again independent copies of repeated_object; but I’d like to understand what is taking place.

Thank you.

repeated_object = { : value... };
os.add( { 'prop_1' : 1, 
          'prop_2' : 2,
          'prop_3' : repeated_object, 
          'prop_4' : repeated_object,
          'prop_5' : repeated_object,
          'prop_6' : repeated_object,
          'prop_7' : repeated_object  } );