[TIL] ๊ฐ์ฒด(Object) ๐Ÿ™ƒ

๊น€์œคํ˜œยท2022๋…„ 11์›” 7์ผ
0

๊ฐ์ฒด(object); ๊ฐ ๋ณ€์ˆ˜์— ๊ฐ™์€ ์ข…๋ฅ˜, ๋‹ค๋ฅธ ๊ฐ’์„ ์ž…๋ ฅํ•˜๋Š” ์ฝ”๋“œ


๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•œ ์ฝ”๋“œ๋ธ”๋Ÿญ

// ์ž…๋ ฅํ•  ๋ฐ์ดํ„ฐ ์˜ˆ์‹œ
let username : 'a';
let useremail : 'a@gmail.com';
let usercity : 'seoul';

let user2name : 'b';
let user2email : 'b@gmail.com';
let user2city : 'busan';




// ๋ฐฐ์—ด๋กœ ํ‘œํ˜„
let user = ['a', 'a@gmail.com', 'seoul']
let user2 = ['b', 'b@gmail.com', 'busan']
// ๊ฐ ์ธ๋ฑ์Šค๊ฐ€ ์–ด๋–ค ์ •๋ณด์ธ ์ง€ ์•Œ ์ˆ˜ ์—†์Œ.




// ๊ฐ์ฒด๋กœ ํ‘œํ˜„; ํ‚ค_name,email,city  ๊ฐ’_'a','a@gmail.com','seoul'
let user = {
	name: 'a',
    email: 'a@gmail.com',
    city: 'seoul'
}

let user2 = {
	name: 'b',
    email: 'b@gmail.com',
    city: 'busan'
}

๊ฐ์ฒด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•; Dot notation, Bracket notation

let user = {
	name: 'a',
    email: 'a@gmail.com',
    city: 'seoul'
}



// Dot natation
user.name; // 'a'
user.city; // 'seoul'



// Bracket natation
user['name']; // 'a'
user['city']; // 'seoul'

** user[name] ์ด๋Ÿฐ์‹์œผ๋กœ ๋”ฐ์˜ดํ‘œ ์—†์ด ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ’์ด ๋„์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค. '',ย  "", ``๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅ. ๋งŒ์•ฝ name์œผ๋กœ ์“ด๋‹ค๋ฉด name์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ํ‚ค๋ฅผ ํ• ๋‹นํ•˜๋ฉด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

์ฝ”ํ”Œ๋ฆฟ 1_get Property

  • ๊ฐ์ฒด์™€ ํ‚ค๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฆฌํ„ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค

  • CHECK POINT

    • obj: ์ž„์˜ ์†์„ฑ์„ ๊ฐ–๋Š” ๊ฐ์ฒด
    • property: string ํƒ€์ž…์˜ ํ‚ค
  • ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

const person = {
  name: 'Steve',
  age: 16,
};

let output = getProperty(person, 'name');
console.log(output); // --> 'Steve'

output = getProperty(person, 'age');
console.log(output); // --> 16

MY CODE(์‹คํŒจ)

function getProperty(obj, property) {
let person = {
  name: 'Steve',
  age: 16,
};
 return obj[property];
}


// ์ž…์ถœ๋ ฅ
let output = getProperty(person, 'name');
console.log(output); // Uncaught ReferenceError: person is not defined

** ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ person๊ฐ’์ด ์ •์˜๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€
=> ์ด๋ฒˆ์—๋Š” ๋ณ€์ˆ˜๋ฅผ ๋จผ์ € ์„ ์–ธํ•˜๊ณ  ํ•จ์ˆ˜ ์ง„ํ–‰

let person = {
  name: 'Steve',
  age: 16,
};


function getProperty(obj, property) {
 return obj[property];
}

// ์ž…์ถœ๋ ฅ
let output = getProperty(person, 'name');
console.log(output); // Steve

** ์ถœ๋ ฅ์€ ์ œ๋Œ€๋กœ ๋์ง€๋งŒ ์ŠคํŠธ๋ง ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ ๋˜์ง€ ์•Š์Œ.
=> ๋ฆฌํ„ด๊ฐ’์„ obj['property']๋กœ ์ˆ˜์ •

let person = {
  name: 'Steve',
  age: 16,
};


function getProperty(obj, property) {
 return obj['property'];
}


let output = getProperty(person, 'name');
console.log(output); // undefined

** 'property'๋กœ ๊ฐ์ฒด๋ฅผ ๋ถˆ๋Ÿฌ์˜ค๋ฉด person์˜ ํ‚ค๊ฐ’(ex. name, age์™€ ๊ฐ™์€) ์ค‘์— property์˜ ๊ฐ’์„ ์ฐพ์•„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ผด์ด ๋˜์–ด๋ฒ„๋ฆผ. ๋ณ€์ˆ˜ person์˜ ํ‚ค๊ฐ’์œผ๋กœ property๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์•„ undefined๋กœ ์ตœ์ข…๊ฐ’์ด ์ถœ๋ ฅ.

๊ฒฐ๋ก 

๋ณ€์ˆ˜๋ฅผ ์•ž์œผ๋กœ ๋นผ๊ณ  ์‹คํ–‰ํ•œ ํ•จ์ˆ˜์˜ ๋ฆฌํ„ด๊ฐ’์ด ์ •๋‹ต. ๋‚ด๊ฐ€ ์˜ˆ์ƒํ•œ ๊ฐ’์€ 'Steve'์˜€๋Š”๋ฐ, ๊ทธ๋ƒฅ Steve๋กœ ์ถœ๋ ฅ๋˜์–ด ์˜ค๋‹ต์œผ๋กœ ์ƒ๊ฐํ•จ. ๊ทธ๋ž˜์„œ ์•ž์˜ ์˜ˆ์‹œ๋„ ๋˜‘๊ฐ™์ด '' ์—†์ด ์ถœ๋ ฅ๋˜๋Š” ์ง€ ์ฝ˜์†”์ฐฝ์— ๋‹ค์‹œ ์‹œ๋„ํ•จ.

let name = 'steve'

let a = { content: 'ํ”„๋ฆฌ์ฝ”์Šค' };


a.content; // 'ํ”„๋ฆฌ์ฝ”์Šค'

a['content']; // 'ํ”„๋ฆฌ์ฝ”์Šค'

์ด๋•Œ๋Š” ์ œ๋Œ€๋กœ ''๊ฐ’์ด ์ถœ๋ ฅ๋จ. ๋ญ๊ฐ€ ๋‹ค๋ฅธ๊ฑธ๊นŒ?

Dot notation vs Bracket notation | ๊ฐ์ฒด ์ˆ˜์ •

  • Dot notation์€ ์ •์ , Bracketn notation์€ ๋™์ .
let person = {
  name: 'Steve',
  age: 16,
};



// Dot notation(1)
function getProperty(obj, property) {
 return obj.name;
}

let output = getProperty(person, 'name');
console.log(output); // Steve
// ํ•ญ์ƒ ํ‚ค ์ค‘ name ๊ฐ’๋งŒ ์ถœ๋ ฅ ๊ฐ€๋Šฅ. ๋‹ค๋ฅธ ํ‚ค๊ฐ’์€ ์ถœ๋ ฅ ๋ถˆ๊ฐ€๋Šฅ(์ •์ )



// Dot notation(2)
function getProperty(obj, property) {
 return obj.property;
}

let output = getProperty(person, 'name');
console.log(output); // undefined
// obj.property : person์˜ ํ‚ค ์ค‘ property์˜ ๊ฐ’์„ ์ฐพ๋Š” ๊ฒƒ. 




// Bracket notation
function getProperty(obj, property) {
 return obj[property];
}


// ์ž…์ถœ๋ ฅ
let output = getProperty(person, 'name');
console.log(output); // Steve
let output = getProperty(person, 'age');
console.log(output); // 16
// ๋ชจ๋“  ํ‚ค์˜ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ.

  • Dot notation Bracket notation ์ด์šฉ, ๊ฐ์ฒด ๋‚ด์šฉ ๋ณ€๊ฒฝ
let user = {
	name: 'a',
    email: 'a@gmail.com',
    city: 'seoul'
}

// ํ‚ค 'hobby', ๊ฐ’ '๋…์„œ' ์ถ”๊ฐ€
user['hobby'] = '๋…์„œ'; // '๋…์„œ'

user; // {
name: 'a', email: 'a@gmail.com', city: 'seoul', hobby: '๋…์„œ'
}

// ํ‚ค 'isPublic', ๊ฐ’ 'true' ์ถ”๊ฐ€
user.isPublic = true;
true

user; // {
name: 'a', email: 'a@gmail.com', city: 'seoul', hobby: '๋…์„œ', isPublic: true
}

// ํ‚ค email ์‚ญ์ œ
delete user.email;
true

user; // {
name: 'a', city: 'seoul', hobby: '๋…์„œ', isPublic: true
}

๊ฐ์ฒด์—์„œ์˜ย for in ๋ฌธ

์ƒ์†๋œ ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ์†์„ฑ๋“ค์„ ํฌํ•จํ•˜์—ฌ ๊ฐ์ฒด์—์„œ ๋ฌธ์ž์—ด๋กœ ํ‚ค๊ฐ€ ์ง€์ •๋œ ๋ชจ๋“  ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ์†์„ฑ์— ๋Œ€ํ•ด ๋ฐ˜๋ณต

const object = { 
a: 1, b: 2, c: 3 
};
// ํ‚ค(property)_a, b, c    ๊ฐ’_1, 2, 3

for (const property in object) { // ๋ณ€์ˆ˜ object ์•ˆ์˜ property(ํ‚ค)๋ฅผ ์ˆœํšŒํ•œ๋‹ค.
  console.log(`${property}: ${object[property]}`);
} // `${ํ‚ค}: ${๋ณ€์ˆ˜[ํ‚ค]}`๋ฅผ ์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅํ•œ๋‹ค.

// expected output:
// "a: 1"
// "b: 2"
// "c: 3"

_mdn ์ฐธ์กฐ

tmi; ํ—ˆ๋ฆฌ๊ฐ€ ๋ฌด์ง€์•„ํ””. ์ตœ๊ทผ์— ์ฑ…์ƒ ์ƒ€๋Š”๋ฐ ๋ชจ์…˜ ๋ฐ์Šคํฌ๋กœ ์‚ด๊ป„ ํ›„ํšŒ์ค‘.. ๊ทธ๋ž˜๋„ ์•„์ดํŒจ๋“œ๊ฐ€ ์žˆ์–ด์„œ ๋‹คํ–‰์ด๋‹ค๐Ÿฅฒ ์–ด์ œ๋Š” ๋จธ๋ฆฌ๊ฐ€ ํŒฝํŒฝ ์ž˜ ๋Œ์•„๊ฐ”๋Š”๋ฐ ์˜ค๋Š˜์€ ๋ธŒ๋ ˆ์ธํฌ๊ทธ์ฒ˜๋Ÿผ ๊ณ„์† ๋ฉํ•จ. ์ฝ”ํ”Œ๋ฆฟ ํ’€๋‹ค๊ฐ€ ๊ณผ์ž๋จน์—ˆ๋”๋‹ˆ ์ข€ ๋‚˜์Œ..ใ…‹ใ…‹

profile
๋ณธ์งˆ์—๋Š” ์ผ์น˜๋ฅผ, ๋น„๋ณธ์งˆ์—๋Š” ๊ด€์šฉ์„, ์ด ๋ชจ๋“  ๊ฒƒ์— ์‚ฌ๋ž‘์„

0๊ฐœ์˜ ๋Œ“๊ธ€