๊ฐ๋ฐ_TIL
๊ฐ๋ฐ_TIL | 2022-07-27 (69)
by Hee94
2022. 7. 27.
๐ Object
์๋ฐ์คํฌ๋ฆฝํธ 7. ์ค๋ธ์ ํธ ๋ ๋ญ๋? | ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ์
๋ฌธํธ (JavaScript ES6)
Object๋?
- primitive ํ์
(number, str …)์ ํ๋์ ๋ณ์์ ํ๋์ ๊ฐ๋ง ํ ๋นํ ์ ์๋ค
- ์ถ๋ ฅํ๋ ค๋ฉด ๊ฐ์ ๊ฐ๊ฐ ๋ค ์ ์ด์ค์ผ ํ๋ค
- ํจ์์ ์ธ์๋ก ๋ฃ์ ๋๋ ๊ฐ๊ฐ ๋ค ์ ์ด์ค์ผ ํ๋ค
- primitve ํ์
์ ๋ณ์๊ฐ ๋๋ฌด ๋ง์์ง๋ฉด ๊ด๋ฆฌํ๊ธฐ๋ ํ๋ค๊ณ , ๋ก์ง์ปฌํ๊ฒ ์๊ฐํ๊ธฐ๋ ์ด๋ ต๋ค
- ๋ฐ๋ผ์ ์ค๋ธ์ ํธ ํํ๋ก ์์ฑํด์ ๊ฐํธํ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌํ์
Literals and Properties
- object literal
const obj = { };
๊ณผ ๊ฐ์ด ์ค๊ดํธ๋ฅผ ์ด์ด์ ๋ง๋ค๊ธฐ
const ellie = {name:'ellie', age:4}; // {key : value}
ellie.hasJob = true; // ์ค๋ธ์ ํธ ์ ์ธ ์ด ํ์ ๋ฐธ๋ฅ ์์ฑ
delete ellie.hasJob; // ์ค๋ธ์ ํธ ์ ์ธ ์ด ํ์ ๋ฐธ๋ฅ ์ญ์
- ํน์ดํ๊ฒ ์ ์ธ์ ํ ์ดํ์ ๊ฐ์ ์ถ๊ฐํ ์๊ฐ ์๋ค.
- Javascript๊ฐ ๋์ ์ผ๋ก ํ์
์ ์ธ์งํ๊ธฐ ๋๋ฌธ์ด๋ค
- ๊ทธ๋ฌ๋ ๋๋ฌด ๋ง์ด ์ฌ์ฉํ๊ธฐ์๋ ๋ฏธ์น์ง์ด๋ค!
- ํน์ดํ๊ฒ ์ ์ธ์ ํ ์ดํ์ ๊ฐ์ ์ญ์ ํ ์๊ฐ ์๋ค
- object constructor
const obj = new Object();
์ ๊ฐ์ด new๋ฅผ ์ฌ์ฉํด์ ๋ง๋ค๊ธฐ
Computed Property
- ์ค๋ธ์ ํธ๋
๋ณ์.ํ๋กํผํฐ
ํน์ ๋ณ์[’ํ๋กํผํฐ’]
์คํธ๋ง
ํ์์ผ๋ก ํ๋กํผํฐ์ ์ ๊ทผํ ์์๋ค. ํ์์ ๊ฒฝ์ฐ Computed Property์ ํด๋น๋๋ค
- key๋ ํญ์ string ํ์
์ผ๋ก ์์ฑํด์ผ ํ๋ค
- ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋ฉํ ๋๋ dot(
.
) ์์ฌ์ฉํ์ฌ ์์ฑํ์ง๋ง, ์ ํํ๊ฒ ๋ฐธ๋ฅ์ ํ์
์ ๋ชฐ๋ผ์ ๋ฉ์๋๋ฅผ ์์ฑํ์ง ๋ชป ํ ๋๋ ๋๊ดํธ([ ]
) ๋ฐฉ์์ ์ปดํจํธ ํ๋กํผํฐ๋ก ์์ฑํ๋ค
- ์ฝ๋ฉํ ๋๋ ์ ํ๋ ์ฐ๋๊ฒ ํธํ๋๊น! ๋, ๋ฉ์๋๋ฅผ ์์ฐ์ค๋ฝ๊ฒ ๋ค์ ๋ถ์ฌ์ ์์ฑํ๊ธฐ ์ข๋ค!
- ๋ฐ๋ฉด ์ปดํจํธ ํ๋กํผํฐ์ ๊ฒฝ์ฐ, ๊ฐ์ด ๋ฌด์์ด๋ ์๊ด์๊ฑฐ๋ ๊ฐ์ด ๋ญ๊ฐ ๋ค์ด์ฌ ์ง ์์ ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ, ๋จ์ ๊ฒ์ฌ์์ ์ฌ์ฉํ๊ฑฐ๋ ํ ๋๋ ์ ์ด์ฃผ๊ธฐ๋ ํ๋ค
function printValue(obj, key) {
// console.log(obj.key); ๋ฅผ ์ด ๊ฒฝ์ฐ์๋ ์ฌ์ฉํ ์ ์๋ค
console.log(obj[key]);
}
printValue(ellie, 'name');
printValue(ellie, 'age');
Property Value Shorthand
- ์ค๋ธ์ ํธ๋ฅผ ์ผ์ผ์ด key : value ๋ก ๋ง๋ค์ด์ฃผ๊ธฐ์๋ ํน์๋ฌธ์๊ฐ ๋ฒ๊ฑฐ๋กญ๋ค
- function์ ์ฌ์ฉํ์ฌ ์ค๋ธ์ ํธ๋ก ์ ์ธํด์ฃผ๋ ๋ฐฉ์์ด ์กฐ๊ธ ๋ ํธ๋ฆฌํ๋ค! → ์ด๊ฒ Shorthand
// ์ผ๋ฐ์ ์ธ ์ค๋ธ์ ํธ์ ์ ์ธ๋ฐฉ๋ฒ
const person1 = {name: 'bob', age: 2};
const person2 = {name: 'steve', age: 3};
const person3 = {name: 'dave', age: 4};
// Shorthand
const person4 = makePerson('ellie', 30);
console.log(person4);
function makePerson(name, age) {
return {
name,
age,
};
}
Constructor Function
- ์ค๋ธ์ ํธ๋ฅผ ์ผ์ผ์ด ๋ง๋ค๋๋ง๋ค, ํค๋ฐธ๋ฅ๋ฅผ ์ ๋๊ฒ ๊ท์ฐฎ๋ค
- ๊ทธ๋์ ํจ์๋ฅผ ๋ง์น ํด๋์ค์ฒ๋ผ ๋ง๋ค์ด์ ์ค๋ธ์ ํธ๋ฅผ ์ ์ธํ๋ ๋ฐฉ์์ด Contructor Function
- ํด๋์ค ์ ์ธ ๊ท์น์ฒ๋ผ
function ๋๋ฌธ์๋ก ์์ํ๋ ํจ์์ด๋ฆ (ํ๋){}
์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ์ธํ๋ฉฐ, ์ด ํจ์์์ฒด๊ฐ constructor ์ญํ ์ ์ํํ๋ค๊ณ ํ์ฌ constructor function ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค
const person4 = makePerson('ellie', 30);
console.log(person4);
function Person(name, age) {
// this = {};
this.name = name;
this.age = age;
// return this;
}
In Operator
- key๊ฐ object์์ ์กด์ฌํ๋์ง ํ์ธํ๋ ๋ฉ์๋
key in object
ํ์์ผ๋ก ์์ฑํ๋ค
console.log('name' in ellie);
for in & for of
- ์ค๋ธ์ ํธ ๋ด๋ถ์ ํค, ๋ฐธ๋ฅ๋ฅผ ํ์ธํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฉ์๋
- for (key in obj)
for (key in object) {}
ํ์์ผ๋ก ์ฌ์ฉํจ
- ์ค๋ธ์ ํธ ๋ด๋ถ์ ํค๋ฅผ ๋ฐ๋ณต๋ฌธ์ผ๋ก ์ฌ๋ผ์ด์ฑํจ
for (key in ellie) {
console.log(key);
}
- for (value of iterable)
- ์ค๋ธ์ ํธ ์ค ์์ฐจ์ ์ผ๋ก ์ํ์ด ๊ฐ๋ฅํ ๋ฐฐ์ด(array)์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ ๋ด๋ถ ๊ฐ์ ๋ฐ๋ณตํ๋ ๋ฉ์๋
for (value of array) {}
ํ์์ผ๋ก ์ฌ์ฉํจ
const array = [1,2,3,4];
for (value of array) {
console.log(value);
}
Clonning
- ์ค๋ธ์ ํธ๋ฅผ ์ ์ธํ๊ณ , ๋ค๋ฅธ ๋ณ์์ ๋๊ฐ์ ์ค๋ธ์ ํธ๋ฅผ ๊ฐ๋ฆฌํจ๋ค๋ฉด ๋์ผํ ๋ ํผ๋ฐ์ค๊ฐ ํ ๋น๋์ด ์๋ค
- ๋์ผํ ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์ ์ค๋ธ์ ํธ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด, ๋ค๋ฅธ ๋ณ์์ ์ค๋ธ์ ํธ ํ๋กํผํฐ๋ ๋ณํด์๋ค
- ์๋ก ๊ฐ์ ๋ ํผ๋ฐ์ค๋ฅผ ๋ณด๊ณ ์์ง๋ง, ์๋กญ๊ฒ ๋ณต์ ํด์ ์ฌ์ฉํด ๊ธฐ์กด ๋ ํผ๋ฐ์ค์ ๊ฐ์ ๋ณ๊ฒฝํ์ง ์๋๋ก ํ๋ ค๋ ๋ฐฉ์์ด Clonning ์ด๋ค
- ์๋ก์ด ๋น ์ค๋ธ์ ํธ๋ฅผ ์ ์ธํ๊ณ ,
Object.assign
์ ์ฌ์ฉํ์ฌ ์ค๋ธ์ ํธ๋ฅผ ํด๋ก๋ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค
const user4 = Object.assign({}, user);
const fruit1 = {color: 'blue'};
const fruit2 = {color: 'red', size:'big'};
// ๋ ๊ฐ๋ฅผ ํฉ์นจ
const fruit3 = {size:'small'};
const mixed = Object.assign({}, fruit1, fruit2, fruit3); // **red small**
//๋ค์ ์๋ ํ๋กํผํฐ๊ฐ ๋ฎ์ด ์์