๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
Language/JavaScript

JavaScript - ๊ฐ์ฒด(Objects)

by DevIseo 2022. 4. 27.

๐Ÿค๊ฐ์ฒด(Objects) - โ€œ๋‹ค์–‘ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒํ˜•โ€์„ ๊ฐ€์ง„ ์ž๋ฃŒ๊ตฌ์กฐ

๊ฐ์ฒด : 'ํ‚ค'์™€ '๊ฐ’'์œผ๋กœ ์ด๋ฃจ์–ด์ง„ 'ํ”„๋กœํผํ‹ฐ'๋“ค์˜ ์ง‘ํ•ฉ! (ํ‚ค์™€ ๊ฐ’์˜ ์ง‘ํ•ฉ)

๊ฐ์ฒด์˜ ๋ชฉ์  : ๋‹ค์–‘ํ•œ "๋ฐ์ดํ„ฐ ํƒ€์ž…"์˜ ์ž๋ฃŒ๋“ค์„ ํ• ๋‹นํ•˜๊ธฐ ์œ„ํ•จ

 

ํ”„๋กœํผํ‹ฐ ํ‚ค : (๋ฌธ์ž์—ด)

ํ”„๋กœํผํ‹ฐ ๊ฐ’ : (๋ชจ๋“ ๊ฐ’) 

 

ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ธ ๊ฒฝ์šฐ๋ฅผ "๋ฉ”์„œ๋“œ"

๋ฉ”์„œ๋“œ :  ๊ฐ์ฒด์•ˆ์˜ ํ•จ์ˆ˜

๊ฐ์ฒด์•ˆ์— ํ”„๋กœํผํ‹ฐ ๊ฐ’์ด ํ•จ์ˆ˜์ธ : ๋ฉ”์„œ๋“œ

ํ•จ์ˆ˜ ์•ˆ์— ๋ฉ”์„œ๋“œ๊ฐ€ ํฌํ•จ!!

|๊ฐ์ฒด์˜ ์ •์˜์™€ ํŠน์ง•

  • ๊ฐ์ฒด๋Š” ์†์„ฑ(property)์˜ ์ง‘ํ•ฉ์ด๋ฉฐ, ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€์— key์™€ value์˜ ์Œ์œผ๋กœ ํ‘œํ˜„
  • key๋Š” ๋ฌธ์ž์—ด ํƒ€์ž…*๋งŒ ๊ฐ€๋Šฅ
    • (์ฐธ๊ณ ) key ์ด๋ฆ„์— ๋„์–ด์“ฐ๊ธฐ ๋“ฑ์˜ ๊ตฌ๋ถ„์ž๊ฐ€ ์žˆ์œผ๋ฉด ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์„œ ํ‘œํ˜„
  • value๋Š” ๋ชจ๋“  ํƒ€์ž…(ํ•จ์ˆ˜ํฌํ•จ) ๊ฐ€๋Šฅ
  • ๊ฐ์ฒด ์š”์†Œ ์ ‘๊ทผ์€ ์  ๋˜๋Š” ๋Œ€๊ด„ํ˜ธ๋กœ ๊ฐ€๋Šฅ
    • (์ฐธ๊ณ ) key ์ด๋ฆ„์— ๋„์–ด์“ฐ๊ธฐ ๊ฐ™์€ ๊ตฌ๋ถ„์ž๊ฐ€ ์žˆ์œผ๋ฉด ๋Œ€๊ด„ํ˜ธ ์ ‘๊ทผ๋งŒ ๊ฐ€๋Šฅ
const me = {
 name: 'jack',
 phoneNumber: '01012345678',
 'samsung products': {
 	buds: 'Galaxy Buds pro',
 	galaxy: 'Galaxy s20โ€™,
 },
}

console.log(me.name)
console.log(me.phoneNumber)
console.log(me['samsung products'])
console.log(me['samsung products'].buds)

|๊ฐ์ฒด์™€ ๋ฉ”์„œ๋“œ; ๋ฉ”์„œ๋“œ(๊ฐ์ฒด "์•ˆ์—" ์žˆ๋Š” ํ•จ์ˆ˜, ํ•จ์ˆ˜!=๋งค์„œ๋“œ)

  • ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ์ด ์ฐธ์กฐํ•˜๋Š” ํ•จ์ˆ˜.
  • ๊ฐ์ฒด.๋ฉ”์„œ๋“œ๋ช…() ์œผ๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ.
  • ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์—์„œ๋Š” this ํ‚ค์›Œ๋“œ๊ฐ€ ๊ฐ์ฒด๋ฅผ ์˜๋ฏธํ•จ.
    • fullName์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ •์ƒ ์ถœ๋ ฅ ๋˜์ง€ ์•Š์Œ(NaN)
    • getFullName์€ ๋ฉ”์„œ๋“œ์ด๊ธฐ ๋•Œ๋ฌธ์— ํ•ด๋‹น. ๊ฐ์ฒด์˜ firstName ๊ณผ lastName์„ ์ •์ƒ์ ์œผ๋กœ ์ด์–ด์„œ ๋ฐ˜ํ™˜
const me = {
 firstName: 'John',
 lastName: 'Doeโ€™,
 fullName: this.firstName + this.lastName,
 getFullName: function () {
 	return this.firstName + this.lastName
 }

|๊ฐ์ฒด ๊ด€๋ จ ES6 ๋ฌธ๋ฒ•

  • ์†์„ฑ๋ช… ์ถ•์•ฝ
  • ๋ฉ”์„œ๋“œ๋ช… ์ถ•์•ฝ
  • ๊ณ„์‚ฐ๋œ ์†์„ฑ๋ช… ์‚ฌ์šฉํ•˜๊ธฐ
  • ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น*
    • (์ฐธ๊ณ ) ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น์€ ๋ฐฐ์—ด๋„ ๊ฐ€๋Šฅํ•จ
  • ๊ฐ์ฒด ์ „๊ฐœ ๊ตฌ๋ฌธ(Spread Operator)

|์†์„ฑ๋ช… ์ถ•์•ฝ (shorthand)

  • ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ๋•Œ key์™€ ํ• ๋‹นํ•˜๋Š” ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์ด ๊ฐ™์œผ๋ฉด ์˜ˆ์‹œ์™€ ๊ฐ™์ด ์ถ•์•ฝ ๊ฐ€๋Šฅ
var books = ['Learning JS', 'Learning Python']
var magazines = ['Vogue', 'Science']
 // ES5
var bookShop = {
 books: books,
 magazines: magazines,
 }
 console.log(bookShop)
////////////////////////////////////////////////////////
const books = ['Learning JS', 'Learning Python']
const magazines = ['Vogue', 'Science']
 // ES6+
const bookShop = {
 books,
 magazines,
 }
 console.log(bookShop)
/*
 {
 books: ['Learning JS', 'Learning Python'],
 magazines: ['Vogue', 'Science']
 }
 *

|๋ฉ”์„œ๋“œ๋ช… ์ถ•์•ฝ (shorthand)

  • ๋ฉ”์„œ๋“œ ์„ ์–ธ ์‹œ function ํ‚ค์›Œ๋“œ ์ƒ๋žต ๊ฐ€๋Šฅ
// ES5
 var obj = {
 greeting: function () {
 conosle.log('Hi!')
 }
 }
 obj.greeting() // Hi!
///////////////////////////////////
// ES6+
 const obj = {
 greeting() {
 console.log('Hi!')
 }
 }
 obj.greeting() // Hi

|๊ณ„์‚ฐ๋œ ์†์„ฑ(computed property name)

  • ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•  ๋•Œ key์˜ ์ด๋ฆ„์„ ํ‘œํ˜„์‹์„ ์ด์šฉํ•˜์—ฌ ๋™์ ์œผ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅ
const key = 'regions'
const value = ['๊ด‘์ฃผ','๋Œ€์ „','๊ตฌ๋ฏธ','์„œ์šธ']
const ssafy = {
	[key]:value,
}
console.log(ssafy) // {regions : Array(4)}
console.log(ssafy.regions) //["๊ด‘์ฃผ","๋Œ€์ „","๊ตฌ๋ฏธ","์„œ์šธ"]

|๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น (destructing assignment)

  • ๋ฐฐ์—ด ๋˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ถ„ํ•ดํ•˜์—ฌ ์†์„ฑ์„ ๋ณ€์ˆ˜์— ์‰ฝ๊ฒŒ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ๋ฒ•
const userInformation = {
	name:'chun sik',
	userId: 'sweetpotato',
	phoneNumber: '010-000-0000',
	email: 'chunsik@sweetpotato.com'
}

const name = userInformation.name
const userId = userInformation.userId
const phoneNumber = userInformation.phoneNumber
const email = userInformation.email
/////////////////////////////////////////

const userInformation = {
	name:'chun sik',
	userId: 'sweetpotato',
	phoneNumber: '010-000-0000',
	email: 'chunsik@sweetpotato.com'
}
const {name} = userInformation
const {userId} = userInformation
const {phoneNumber} = userInformation
const {email} = userInformation
//์—ฌ๋Ÿฌ๊ฐœ๋„ ๊ฐ€๋Šฅ!
const {name, userId} = userInformation

|Spread Operator

  • spread operator(...)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ ๊ฐ์ฒด ์ „๊ฐœ ๊ฐ€๋Šฅ
  • ์–•์€ ๋ณต์‚ฌ์— ํ™œ์šฉ ๊ฐ€๋Šฅ
const obj = {b: 2, c: 3, d: 4}
const newObj = {a: 1, ...obj, e: 5}
console.log(newObj) // {a: 1, b: 2, c: 3, d: 4, e: 5

|JSON(JavaScriptObjectNotation)

  • key-value์Œ์˜ ํ˜•ํƒœ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ๊ธฐํ•˜๋Š” ์–ธ์–ด ๋…๋ฆฝ์  ํ‘œ์ค€ ํฌ๋งท
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด์™€ ์œ ์‚ฌํ•˜๊ฒŒ ์ƒ๊ฒผ์œผ๋‚˜ ์‹ค์ œ๋กœ๋Š” ๋ฌธ์ž์—ด ํƒ€์ž…
  • ๋”ฐ๋ผ์„œ JS์˜ ๊ฐ์ฒด๋กœ์จ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ตฌ๋ฌธ ๋ถ„์„(parsing)์ด ํ•„์ˆ˜
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” JSON์„ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ๋‚ด์žฅ ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
    • JSON.parse()
      • JSON => ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด
    • JSON.stringify()
      • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด => JSON
//Object -> JSON
const jsonData = JSON.stringify({
	coffee: 'Americano',
	iceCream: 'Cookie and cream',
})
console.log(jsonData) // "{"coffe":"Americano",...
console.log(typeof jsonData) //string

//JSON -> Object
const jsonData = JSON.stringify({
	coffee: 'Americano',
	iceCream: 'Cookie and cream',
})
const parseData = JSON.parse(jsonData)
console.log(parseData) // {coffee:"Americano",...
console.log(typeof parseData) //object

'Language > JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JavaScript - ํ”„๋กœํ† ํƒ€์ž…(prototype), ํด๋ž˜์Šค(class)  (0) 2022.05.03
JavaScript - this  (0) 2022.05.02
JavaScript - ๋ฐฐ์—ด(Arrays)  (0) 2022.04.27
JavaScript - ๋ฌธ์ž์—ด(String)  (0) 2022.04.26
JavaScript - ํ•จ์ˆ˜(function)  (0) 2022.04.26

๋Œ“๊ธ€