์ฐ๊ด๋ ํจ์/ ์ฐ๊ด๋ ๋ณ์
๋ค์ groupingํ์ฌ ์ ๋ฆฌํ๋ ์ญํ
๋ก ์ฌ์ฉํ๋๋ฐ ์ผ์ข
์ ํด๋
์ญํ ๋ก ์ดํดํ๋ฉด ๋๋ค. ๊ฐ์ฒด๋ โ {}(์ค๊ดํธ)
๋ก ๊ฐ์ธ์ ธ ์๊ณ โก ์ฝ๋ก (:)
์ผ๋ก ๊ตฌ๋ถ๋ key/value
์๋ค์ด โข,(์ผํ)์ผ๋ก ๋ถ๋ฆฌ
๋ ๋ชฉ๋ก์ ํํ์ด๋ค.(property์ ์ด๋ฆ์ ์ค๋ณต๋ ์ ์๋ค.)
๊ฐ์ฒด์ key์๋ space, ํ๊ธ, ํน์๋ฌธ์
๋ฑ์ด ๋ค์ด๊ฐ ์ ์๋ค. ๋ง์ฝ key ๊ฐ์ ํน์๋ฌธ์๊ฐ ์๋ค๋ฉด ' '๋ฅผ ์๋ต
ํ๊ณ key๊ฐ์ ์ธ ์ ์๋ค.
let difficult = {
'my name': 'boong',
color: 'silver',
ํค: 'ํ๊ธ์ธ ํค๋ ๋ฐ์ดํ๊ฐ ์์ด๋ ๋๋๊ตฐ!!',
'!ํค': '๋๋ํ ์๋ ํค๋ ๋ฐ์ดํ๊ฐ ํ์ํ๊ตฐ',
$special: '$๋ ์์ด๋ ๋๋๊ตฐ'
};
function printValue(obj, key) {
console.log(obj.key); // โบundefined โ obj์ key๋ผ๋ property๊ฐ ์๋์ง ํ์ธ
console.log(obj[key]; // โบellie
}
printValue(ellie, 'name');
dot(.) notation
: ์์ฑ ๊ฐ
๋ค ํน์ ๋ด์ฅ ๊ฐ์ฒด
์ ์ ๊ทผํ ๋ ์ฌ์ฉ
ํ๋ฉฐ, ์กด์ฌํ์ง ์๋ ์์ฑ
์ ์ ๊ทผํ๋ ค๊ณ ํ๋ฉด undefined
๊ฐ return ๋๋ค. ์ซ์๋ก ์์
ํ๋ ์์ฑ/๋ณ์ํํ
์ ์์ฑ์ ๊ตฌ๋ถํ ์ ์๋ค
.[์์]
OK โบ obj.prop_1, obj.prop$
Not OK โบ obj.1prop, obj.prop name
bracket([]) notation
: dot notation๊ณผ ๊ฐ์ด ๊ฐ์ฒด ์ ๊ทผ์ ์ฌ์ฉํ๋ค. dot๊ณผ ๋ค๋ฅด๊ฒ white space
ํน์ string ํํ์ ํน์๋ฌธ์ ํํ์๋ ์ ๊ทผ์ด ๊ฐ๋ฅ
ํ๊ณ , ์ซ์๋ก ์์ํ๋ ์์ฑ/๋ณ์
๋ ๊ตฌ๋ถํ ์ ์๋ค. ๋ณ์์ ์ ๊ทผ
ํ๊ณ ์ถ์ ๋๋ ""
์ ํจ๊ป bracket notation์ ์ฌ์ฉํ๋ค.[์์]
OK โ obj["1prop"], obj["prop name"]
let plan1 = {
name: "Basic"
};
let propertyName = "name";
console.log(plan1[propertyName]);
console.log(propertyName);
โบBasic
โบname
์์ฑ ์ถ๊ฐ
: =
์ ํตํด์ ๊ฐ์ฒด๋ฅผ ์ถ๊ฐ(key=value ํํ)
ํ๊ฑฐ๋ ๊ธฐ์กด์ ์์ฑ๋ค์ ๋ฐ๊ฟ ์ ์๋ค
. ๋ง์ฝ ์ด๋ฏธ ๊ฐ์ฒด์ ์๋ ์์ฑ
์ด๋ผ๋ฉด ์๋ก์ด ๊ฐ
์ผ๋ก ๋์ฒด๋ ์ ์๊ณ , ์๋ ์์ฑ
์ด๋ผ๋ฉด ๊ฐ์ฒด์ ์๋กญ๊ฒ ์ถ๊ฐ
๋ ์ ์๋ค.const spaceship = {type: 'shuttle'};
spaceship = {type: 'alien'};
โบ TypeError: Assignment to constant variable.
spaceship.type = 'alien';
โบ spaceship = {type: "alien"};
spaceship.speed = 'Mach 5';
โบ spaceship = {type: "alien", speed: "Mach 5"};
์์ฑ ์ญ์
: delete operator
๋ฅผ ํตํด ๊ฐ์ฒด์ ์์ฑ์ ์ญ์ ํ ์ ์๋ค.const spaceship = {
'Fuel Type': 'Turbo Fuel',
homePlanet: 'Earth',
mission: 'Explore the universe'
};
delete spaceship.mission;
spaceship;
โบ{type: "alien", speed: "Mach 5"}
const person1 = { name: 'bob', age: 2 };
const person2 = { name: 'steve', age: 3};
const person3 = new Person('ellie, 30);
function Person(name, age) {
// this = {}; ์ด ์๋ต๋จ
this.name = name;
this.age = age;
// return this; ์๋ต๋จ
}
๊ฐ์ฒด๋ฅผ ๋ณ์์ ์ ์ฅ
ํ๋ฉด ๊ฐ์ฒด literal ์์ฒด๊ฐ ์ ์ฅ๋๋๊ฒ ์๋๋ผ reference๊ฐ ์ ์ฅ
๋๋ค. text๋
๋ณ์์ ์ ์ฅํ๋ฉด text ์์ฒด๊ฐ ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๋ณ์๋ช
์ด ๋ฌ๋ผ๋ text ๊ฐ์ด ๊ฐ์ผ๋ฉด ์๋ก ๊ฐ๋ค(true)๊ณ ํํ
ํ๋ค. ํ์ง๋ง ๊ฐ์ฒด๋ ์ ์ฅํ ๋ ๊ฐ์ฒด ์์ฒด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ๋ณ์๋ผ๋ฆฌ ๊ฐ์์ง๋ฅผ ๋น๊ตํ๋ฉด ์๋ก ๊ฐ์ง ์์(false)๊ฒ์ผ๋ก ์ธ์
ํ๋ค. ํ์ง๋ง ๊ฐ์ฒด ๋ด๋ถ์ ํ๋กํผํฐ ๊ฐ๋ผ๋ฆฌ ๋น๊ต
ํ ๋๋ ๊ฐ์/๋ค๋ฆ
์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์๋ค.
๊ฐ์ฒด๋ ์์๊ฐ ์๊ณ ํค๋ฅผ ํตํด์๋ง ์ ๊ทผ์ด ๊ฐ๋ฅ
ํ๋ค. ํ์ง๋ง ์ฌ๋ฌ๊ฐ์ง ์ด์ ๋ก ๊ฐ์ฒด์ ์๋ ๋ชจ๋ ํค์ ํ๋ฒ์ฉ ์ ๊ทผํด์ผํ๋ ์ฝ๋๋ฅผ ์จ์ผํ๋ค๋ฉด ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ด ์๋ค. ๋ค๋ง ๋ช
ํํ๊ฒ ์ ํด์ง ์์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๊ฐ์ฒด์ ์ํ๋ '์์๊ฐ ๋ณด์ฅ๋์ ์์ ์ํ'
๋ผ๊ณ ํ๋ค.
โ Object.keys(๊ฐ์ฒด์ด๋ฆ)
: ์ด๋ค ๊ฐ์ฒด
๊ฐ ๊ฐ์ง๊ณ ์๋ ํค๋ค์ ๋ชฉ๋ก
์ ๋ฐฐ์ด๋ก return
ํ๋ method์ด๋ค.
โกObject.values(๊ฐ์ฒด์ด๋ฆ)
: ์ด๋ค ๊ฐ์ฒด
๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ๋ค์ ๋ชฉ๋ก
์ ๋ฐฐ์ด๋ก return
ํ๋ method์ด๋ค.
โขObject.entries(๊ฐ์ฒด์ด๋ฆ)
: ์ด๋ค ๊ฐ์ฒด
๊ฐ ๊ฐ์ง๊ณ ์๋ ํค:๊ฐ ํํ์ ๊ฐ์ฒด๋ฅผ
์ 2์ด์ง๋ฆฌ ๋ฐฐ์ด๋ก return
ํ๋ method์ด๋ค.
const obj = {
name: 'melon',
weight: 4350,
price: 16500,
isFresh: true
}
Object.keys(obj) // ['name', 'weight', 'price', 'isFresh']
โบ["name", "weight", "price", "isFresh"]
๐ฟ ๊ฐ์ฒด๋ฅผ ์ํํ๋ for-in๋ฌธ
const arr = ['coconut', 'banana', 'pepper', 'coriander']
for (let i in arr) {
console.log(i)
console.log(arr[i])
}
user = { name: 'ellie', age: 20 };
const user4 = Object.assign({}, user);
console.log(user4);
โบ { name: 'ellie', age: 20 }
const fruit1 = { color: 'red' };
const fruit2 = { color: 'blue', size: 'big' };
const mixed = Object.assign({}, fruit1, fruit2};
// ๊ฐ์ด ์ค๋ณต๋๋๊ฒ ์๋ค๋ฉด ๋ค์ ๊ฐ์ฒด๊ฐ ์์ ๊ฐ์ฒด value๋ฅผ ๋ฎ์ด์ด๋ค.
console.log(mixed.color);
console.log(mixed.size);
โบblue
โบbig