Last active
February 19, 2024 00:16
-
-
Save amberlex78/20b13574bdddfe212ad8b98064023671 to your computer and use it in GitHub Desktop.
Object Mutation in Javascript
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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