๐ ๊ฐ์ฒด ๋ฉ์๋(Object Methods)์ ๋ํด ์์๋ณด์.
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ํ์
(Primitive)
๊ณผ ๊ฐ์ฒด(Object)
์ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์ ์์ํ์
์ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅ ๋๋ ํ ๋นํ๊ณ ๊ฐ์ฒด๋ ์ ์ฅ๋์ด์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํจ๋ค๋ ์ ์ด๋ค. (์ฐธ๊ณ : ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ)
์ผ๋ฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ ๊ฐ์ฒด์ ์ฃผ์๊ฐ
์ด ๋ณต์ฌ๋๋ค. ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ user
์ ํ๋กํผํฐ ๊ฐ์ ๋ฐ๋๋ฉด ์์ฐ์ค๋ฝ๊ฒ copyUser
์ ๊ฐ๋ ๋ฐ๋๊ฒ ๋๋ค.(๋งจ ์ฒ์์ ์ธ๊ธํ๋ ๊ฐ์ฒด๋ ๊ฐ์ ์ฃผ์ ๊ฐ์ ๊ฐ๋ฆฌํค๊ณ ์๋ ๊ฒ์ ์๊ฐํ์.)
const user = {
name: "์์์ฐ",
age: 27,
}
const copyUser = user;
user["name"] = "์์์ค"
user["age"] = 14
console.log(copyUser); // { name: '์์์ค', age: 14 }
์ด์ ์ var
, let
, const
๋ณ์์ ์ฐจ์ด์ ์ ๊ณต๋ถํ๋ฉด์ ๋ ์ค๋ฅธ ์๋ฌธ์ ์ const
๋ณ์๋ก ์ ์ธ๋ ๊ฐ์ฒด๋ ์ ์ธ + ์ด๊ธฐํ + ํ ๋น
์ ๋์์ ํ๊ธฐ ๋๋ฌธ์ ๋ณ์ ์ ์ธ ์ดํ ํ๋กํผํฐ๊ฐ ๋ฐ๋๋ฉด ์ค๋ฅ๊ฐ ๋์ผ ํ๋ ๊ฒ ์๋๊ฐ??๋ผ๊ณ ํ ์๋ ์์ง๋ง, const
๋ณ์๋ user
์ ๊ฐ์ ๊ณ ์ ํ์ง๋ง ๊ทธ ๋ด์ฉ์ ๊ณ ์ ํ์ง ์๋๋ค. (์ฐธ๊ณ : ์ฝ์ด ์๋ฐ์คํฌ๋ฆฝํธ)
1๏ธโฃ Object.assign()
๊ฒฐ๋ก ์ ์ผ๋ก ์ฐธ์กฐ๊ฐ์ ๋ณต์ฌํ์ง ์๊ณ ๊ฐ์ฒด ์์ฒด๋ฅผ ๋ณต์ฌํ๊ณ ์ถ๋ค๋ฉด Object.assign()
ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋๊ณ ๋ค์๊ณผ ๊ฐ์ด ์ฌ์ฉํ ์ ์๋ค. const copyUser = Object.assign({}, user)
์ฌ๊ธฐ์ ์ฒซ๋ฒ์งธ ๋งค๊ฐ๋ณ์์ธ {}
๋ ์ด๊ธฐ๊ฐ
์ ๋ปํ๊ณ ๋ ๋ฒ์งธ ๋งค๊ฐ๋ณ์๋ ์ฒซ ๋ฒ์งธ ๋งค๊ฐ๋ณ์(์ด๊ธฐ๊ฐ {})์ ํฉ์น๋ค๋ ๋ป์ด๋ค. ๋ค์ ์ฝ๋์์ assign
์ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํ ๋ณ์๋ ์๋์ ๊ฐ์ ๋ณ๊ฒฝํด๋ ํ๋กํผํฐ์ ๊ฐ์ด ๋ณ๊ฒฝ๋์ง ์๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.
const user = {
name: "์์์ฐ",
age: 27,
}
const copyUser = Object.assign({}, user);
user["name"] = "์์์ค"
user["age"] = 14
console.log(copyUser); // { name: '์์์ฐ', age: 27 }
์์์ ์ธ๊ธํ const copyUser = Object.assign({}, user)
์ฝ๋์์ ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ธ {}
๋ ์ด๊ธฐ๊ฐ์ ๋ปํ๋ค๊ณ ํ๋๋ฐ, ์ฌ๊ธฐ์ ์ด๊ธฐ๊ฐ์ {}
๋์ ๊ฐ์ด ๋ค์ด์๋ ๊ฐ์ฒด ํํ๋ก ์ ์ธํด์ ํฉ์น ์๋ ์๋ค.
const userInfo = {
age: 27
}
const addUserInfo = Object.assign({name: "์์์ฐ"}, userInfo);
console.log(addUserInfo); // { name: '์์์ฐ', age: 27 }
๋ง์ฝ, ์ด๊ธฐ๊ฐ์ฒด์ key
์ ์๋ก ๋ฎ์ผ๋ ค๋ key
๊ฐ์ด ์ค๋ณต๋๋ฉด ์๋ก ๋์ด์จ ๊ฐ์ ๋ฎ์ด ์์ด๋ค.
const userInfo = {
name: "์์์ฐ"
}
const overLapNameInfo = Object.assign(userInfo, {name: "์์์ค"});
console.log(overLapNameInfo); // { name: '์์์ค' }
๋, 2๊ฐ ์ด์์ ๊ฐ์ฒด๋ ํฉ์น ์ ์๋ค. ์ด๋ ๊ฐ์ฅ ์ข์ธก์ ์๋ ์ด๊ธฐ ๊ฐ์ฒด์ ๋ฎ์ด ์์ด๋ค.
const mergeMultipleObjs = Object.assign({name: "์์์ฐ"}, {age: 27}, {gender: "man"});
console.log(mergeMultipleObjs); // { name: '์์์ฐ', age: 27, gender: 'man' }
2๏ธโฃ Object.keys()
๊ฐ์ฒด์ key
๊ฐ์ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํ์ํค๋ ๋ฉ์๋๋ค.
const user = {
name: "์์์ฐ",
age: 27,
gender: "male"
}
const userKey = Object.keys(user);
console.log(userKey); // [ 'name', 'age', 'gender' ]
3๏ธโฃ Object.values()
๊ฐ์ฒด์ value
๋ฅผ ๋ชจ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ฐํ์ํค๋ ๋ฉ์๋๋ค.
const user = {
name: "์์์ฐ",
age: 27,
gender: "male"
}
const userKey = Object.values(user);
console.log(userKey); // [ '์์์ฐ', 27, 'male' ]
4๏ธโฃ Object.entries()
key
์ value
๋ฅผ ๋ชจ๋ ๋ฐฐ์ด๋ก ๋ฐํํ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋๋ค.
const user = {
name: "์์์ฐ",
age: 27,
gender: "male"
}
const userKey = Object.values(user);
console.log(userKey); // [ [ 'name', '์์์ฐ' ], [ 'age', 27 ], [ 'gender', 'male' ] ]
5๏ธโฃ Object.fromEntries()
Object.entries()
์ ๋ฐ๋๋ก key
์ value
๊ฐ ์์ผ๋ก ๋ฌถ์ฌ์๋ ๋ฐฐ์ด์ ๊ฐ์ฒด๋ก ๋ฐ๊ฟ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋๋ค
const changeObjFromArray = Object.fromEntries([ [ 'name', '์์์ฐ' ], [ 'age', 27 ], [ 'gender', 'male' ] ]);
console.log(changeObjFromArray) // { name: '์์์ฐ', age: 27, gender: 'male' }
Reference
๋๊ธ