Skip to content

Instantly share code, notes, and snippets.

@amberlex78
Last active February 19, 2024 00:16
Show Gist options
  • Save amberlex78/20b13574bdddfe212ad8b98064023671 to your computer and use it in GitHub Desktop.
Save amberlex78/20b13574bdddfe212ad8b98064023671 to your computer and use it in GitHub Desktop.
Object Mutation in Javascript
const user = {
age: 22,
gender: 'male',
address: {
city: 'Kyiv'
}
}
// Copying objects
const user2 = user; // assignment of reference
const user3 = Object.assign({}, user) // shallow copying
const user4 = { ...user } // shallow copying (shorter)
const user5 = JSON.parse(JSON.stringify(user)) // deep cloning/copying
console.log(user2.age, user2.gender, user2.address.city) // 22, 'male', 'Kyiv'
// All level mutation - assignment of reference
user2.age = 33
user2.gender = 'female'
user2.address.city = 'Kharkiv'
console.log(user.age, user.gender, user.address.city) // 33, 'female', 'Kharkiv'
// Only first level mutation - shallow copying
user3.age = 44
user3.gender = 'male'
user3.address.city = 'Odesa'
console.log(user.age, user.gender, user.address.city) // 33, 'female', 'Odesa'
// Only first level mutation - shallow copying (shorter)
user4.age = 55
user4.gender = 'male'
user4.address.city = 'Lviv'
console.log(user.age, user.gender, user.address.city) // 33, 'female', 'Lviv'
// No mutation - deep cloning/copying
user5.age = 0
user5.gender = 'none'
user5.address.city = 'none'
console.log(user.age, user.gender, user.address.city) // 33, 'female', 'Lviv'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment