https://blog.stackademic.com/navigating-the-immutable-and-mutable-realms-of-javascript-unraveling-primitive-values-and-object-7e0158cca4e6