: Object๊ฐ์ฒด์ prototype ์์ฑ์ ๋ฉ์๋๊ฐ ์๋ ๋ฉ์๋
: ์ง์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋!!!!
ex) {}.assign() -> ์ฌ์ฉ ๋ชปํจ
- ์ถ์ฒ ๊ฐ์ฒด๋ค์ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฒด ์์ฑ์ ๋ณต์ฌํด ๋์ ๊ฐ์ฒด์ ๋ถ์ฌ๋ฃ๋๋ค. ๊ทธ ํ ๋์ ๊ฐ์ฒด๋ฅผ ๋ฐํํจ.
- assign(๋์๊ฐ์ฒด, ํ๋ ์ด์์ ์ถ์ฒ ๊ฐ์ฒด)
: ๋ฐํ๊ฐ -> ๋์๊ฐ์ฒด!!!!
๐พ #1
const target = { a:1, b:2 };
const source = { b: 4, c:5 };
const returnTarget = Object.assign(target, source);
console.log(target);
// Object { a: 1, b: 4, c: 5 }
console.log(returnTarget);
// Object { a: 1, b: 4, c: 5 }
console.log(target === returnTarget); // true
assign({}, ํ๋ ์ด์์ ์ถ์ฒ ๊ฐ์ฒด)
: ๋น์ด์๋ ๊ฐ์ฒด์ ๋๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฝ์ ํด, ๋๊ฐ์ ๊ฐ์ฒด๋ฅผ ํฉ์น ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ฌ!!
๐พ #2
const source1 = { a:1, b:2 };
const source2 = { b: 4, c:5 };
const returnTarget = Object.assign({}, source1, source2);
console.log(returnTarget);
// Object {a: 1, b: 4, c: 5}
- Object.Keys(๊ฐ์ฒด)
: ๊ฐ์ฑ์ key๋ฅผ ์ถ์ถํ์ฌ ์๋ก์ด ๋ฐฐ์ด ๋ฐ์ดํฐ๋ก ๋ฐํํจ- Object.values(๊ฐ์ฒด)
: ๊ฐ์ฑ์ value๋ฅผ ์ถ์ถํ์ฌ ์๋ก์ด ๋ฐฐ์ด ๋ฐ์ดํฐ๋ก ๋ฐํํจ- Object.entries(๊ฐ์ฒด)
: ๊ฐ์ฑ์ key,value๋ฅผ ์ถ์ถํ์ฌ ์๋ก์ด ๋ฐฐ์ด ๋ฐ์ดํฐ๋ก ๋ฐํํจ
๐พ #1
const user = {
name: 'Zooyaho',
age: 24,
gender: 'female'
}
console.log(Object.keys(user)) // ['name', 'age', 'gender']
console.log(Object.values(user)) // ['Zooyaho', 24, 'female']
console.log(Object.entries(user)) // [['name','Zooyaho'],['age', 24],['gender','female']]
- Object.fromEntries(๋ฐฐ์ด)
: ๊ฐ์ฑ์ key,value ๋ฐฐ์ด์ ๊ฐ์ฒด๋ก ๋ฐํํจ
๐พ #1
const arr =
[
['name','Zooyaho'],
['age', 24],
['gender','female']
]
console.log(Object.fromEntries(arr));
// { name: 'Zooyaho', age: 24, gender: 'female'}
๊ฐ์ฒด ๋ฐ์ดํฐ๋ ์ธ๋ฑ์ฑ๋ฐฉ๋ฒ์ ์ ๊ณตํจ!!!!
console.log(user['email']) // thisis@gmail.com
const values = keys.map(key => user[key])
console.log(values)
// ['Zooyaho', 24, 'thisis@gmail.com']
- ๊ฐ์ฒด ๋ฐ์ดํฐ์์ ๋ด์ฉ์ ๊ตฌ์กฐ๋ถํดํด์ ๋ด๊ฐ ์ํ๋ ์์ฑ๋ค๋ง ๊บผ๋ด์ ์ฌ์ฉํ ์์์.
- ๊ฐ์ฒด์ ์์ฑ์ด ๋ง์ ๋ ํ์ํ ๋ฐ์ดํฐ๋ง ๊บผ๋ด์ด ์ฌ์ฉํ ์ ์์.
- const { key1, key2, key3, ...} = ๊ฐ์ฒด๋ช
-> ${๊ฐ์ฒด๋ช .key1} ์๋ ${key1}๋ก ์ฌ์ฉ ๊ฐ๋ฅ = ๊ฐํธํด์ง.
๐พ #1
const user = {
name = 'Zooyaho',
age: 85,
email: 'thisis@gmail.com'
}
cost {name, age, email, address} = user
๐ ๋ณ๋ช
์ง์ ํ์ฌ ์ฌ์ฉ
const { key1: nickname, key2, key3, ...} = ๊ฐ์ฒด๋ช
-> ${key1}์ด ์๋ ์ง์ ํ ๋ณ์ ${nickname}์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ, key1๋ ์ฌ์ฉ ๋ถ๊ฐ๋ฅ(error)
๐ ๊ธฐ๋ณธ๊ฐ ์ง์
const { key1 = 'zooyaho', key2, key3, ...} = ๊ฐ์ฒด๋ช
-> ${key1} ๋ฐํ ์ undefined๊ฐ ์๋ zooyaho๋ก ๋ฐํ ๋จ
-> ๊ฐ์ฒด์ key1์ ๊ฐ์ด ์ง์ ๋์ด ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ์ ๋ฌด์๋จ.
- const [a, b, c, d] = ๊ฐ์ฒด
-> ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ๊ฐ๊ฐ a, b, c, d๋ก ์ง์ ํ์ฌ
console.log(a,b,c,d)๋ก ๋ฐฐ์ด ๊ฐ๋ค์ ์ถ๋ ฅํจ!- ์ด๋ฆ์ด ์๋ ์์๋๋ก ๊ตฌ์กฐ ๋ถํด๋ฅผ ํจ!!
๐พ #1
const fruits = ['Apple', 'Banana', 'Cherry']
const [a, b, c, d] = fruits
console.log(a,b,c,d) // Apple Banana Cherry undefined
๐ ํน์ ์ธ๋ฑ์ค๋ฒํธ๋ง ๊ตฌ์กฐ ๋ถํดํ ๊ฒฝ์ฐ
๐พ #2
const [, b] = fruits
console.log(b) // Banana
- ํ๋์ ๋ฐฐ์ด๋ฐ์ดํฐ๋ฅผ ์ผํ๋ก ๊ตฌ๋ถํ๋ ๊ฐ๊ฐ์ ์์ดํ ์ผ๋ก ์ ๊ฐํด์ ์ถ๋ ฅํจ
๐พ #1
const fruits = {'Apple', 'Banana', 'Cherry'}
console.log(...fruits) // Appple Banana Cherry
function toObjsct(a,b,c) {
return {
a:a,
b:b,
c:c
}
}
console.log(toObjsect(...fruits))
// {a: 'Apple', b:'Banana', c:'Cherry'}
๐ ๋งค๊ฐ๋ณ์์์ ์ ๊ฐ์ฐ์ฐ์ ์ฌ์ฉํ๊ธฐ
- rest parameter: ๋๋จธ์ง์ ๋ชจ๋ ์ธ์๋ฅผ ๋ค ๋ฐ์๋ด๋ ์ญํ
- ๋ฐฐ์ด์ ๋๋จธ์ง item์ ๋ฃ์ ์ธ์๋ ๋ฐฐ์ด์ ๋ฐํํจ.
๐พ #2
const fruits = {'Apple', 'Banana', 'Cherry', 'Orange'}
function toObjsct(a,b,...c) {
return {
a:a,
b:b,
c:c
}
}
console.log(toObjsect(...fruits))
// {a: 'Apple', b:'Banana', c:Array(2)}
/* ์ถ์ฝํ */
// 1. ์์ฑ์ ์ด๋ฆ์ ๋ฐ์ดํฐ์ ์ด๋ฆ์ด ๊ฐ์ผ๋ฉด ์ถ์ฝ๊ฐ๋ฅ
function toObject(a, b, ...c) {
return { a, b, c }
}
// 2. ํ์ดํ ํจ์
const toObject = (a, b, ...c) => ({ a, b, c })
// {}๋ ํจ์์ ๋ฒ์๋ฅผ ๋ํ๋ด๋ ๋จ์ํ ๋ธ๋ก์ ์๋ฏธ๋ก ํด์๋๊ธฐ ๋๋ฌธ์ ()์ ๋ถ์ฌ์ผ ๊ฐ์ฒด๋ฐ์ดํฐ๋ฅผ ๋ฐํํจ!!!
- ์์ ๋ฐ์ดํฐ: String, Number, Boolean, undefined, null
- ์ฐธ์กฐํ ๋ฐ์ดํฐ: Object, Array, Function
- ์์๋ฐ์ดํฐ๋ ๋ถ๋ณ์ฑ, ์ฐธ์กฐํ์ ๊ฐ๋ณ์ฑ์ ๋๋ค.
๐ ์์ ๋ฐ์ดํฐ
๐พ #1
let a = 1
let b = 4
b = a
console.log(a === b) // true
๐๐ป b์ ๊ฐ์ธ 1์ ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์์ฑํด์ ํ ๋นํ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด์ ์๋ 1์ ๋ฉ๋ชจ๋ฆฌ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ด๋ค. b๋ ๊ฐ์ ๋ณ๊ฒฝํ๊ฒ์ด ์๋ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ด ๋ณ๊ฒฝ๋ ๊ฒ์ด๋ค.
๐ ์ฐธ์กฐํ ๋ฐ์ดํฐ
๐พ #2
let a = { k:1 }
let b = { k:1 }
console.log( a === b) // false - ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
b = a
console.log( a === b) // true - ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น
let c = b
console.log( a === c) // true
a.k = 9
console.log( a === c) // true
console.log(a,b,c) // {k:9}{k:9}{k:9}
๐พ #1
const user = {
name = 'Zooyaho',
age: 85,
emails: ['thisis@gmail.com']
}
// ์์ ๋ณต์ฌ
const copyUser = {...user}
// const copyUser = Object.assign({}, user)
console.log(copyUser === user) // false
// emails์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ณต์ ํ๊ณ ์์
user.emails.push('zoo@naver.com')
console.log(copyUser.emails === user.emails) // true
๐ ์์ ๋ณต์ฌ๋ ์ฐธ์กฐํ ๋ฐ์ดํฐ๊น์ง ๋ณต์ฌ๊ฐ ๋์ง ์์.
- lodash ํจํค์ง๋ฅผ ์ฌ์ฉํ์ฌ ๊น์๋ณต์ฌ ์งํ ๊ฐ๋ฅ
- cloneDeep() ๋ฉ์๋ ์ฌ์ฉ(_.cloneDeep(๊ฐ์ฒด) : ๊ฐ์ฒด ๋ฐํ)
๐พ #2
const user = {
name = 'Zooyaho',
age: 85,
emails: ['thisis@gmail.com']
}
// ๊น์ ๋ณต์ฌ
const copyUser = _.cloneDeep(user)
console.log(copyUser === user) // false
// emails์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ณต์ ํ๊ณ ์์ง ์์
user.emails.push('zoo@naver.com')
console.log(copyUser.emails === user.emails) // false