dev/javascript

[ JS ] ๊ฐ์ฒด ์กฐํšŒ ๋ฐฉ๋ฒ• Dot notation vs Square-Bracket notation

๋นŒ๋ผ๋„ฌ 2022. 4. 22. 14:43

๊ฐ์ฒด์—์„  key๋ฅผ ์ด์šฉํ•ด ํ”„๋กœํผํ‹ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š”๋ฐ, ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.

Dot notation ( ์  ํ‘œ๊ธฐ๋ฒ• )๊ณผ Square-Bracket notation( ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ• )

์  ํ‘œ๊ธฐ๋ฒ•

    const user = {
      name : '๋นŒ๋ผ๊ฐฑ',
      gender: '๐Ÿšบ',
      'favorite food' : '๐Ÿ•' //๋ณต์ˆ˜์˜ ๋‹จ์–ด๋Š” ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด์ค˜์•ผ ํ•จ 
    } 
    
    alert(user.name) // ๋นŒ๋ผ๊ฐฑ

์œ„์™€ ๊ฐ™์ด ์  ํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด์„œ name์ด๋ผ๋Š” key๋กœ ํ•ด๋‹น ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฝ์–ด์™”๋‹ค. ํ•˜์ง€๋งŒ 'favorite food'์™€ ๊ฐ™์ด ์—ฌ๋Ÿฌ ๋‹จ์–ด๋ฅผ ์กฐํ•ฉํ•ด ํ”„๋กœํผํ‹ฐ key๋ฅผ ๋งŒ๋“  ๊ฒฝ์šฐ ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋‹ค.
user.favorite food = '๐Ÿ—' //โŽ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์œ„์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ๋‹ค. user.favorite ๊นŒ์ง€ ์ดํ•ดํ•˜์ง€๋งŒ food๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฌธ๋ฒ• ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
์  ํ‘œ๊ธฐ๋ฒ•์€ '์œ ํšจํ•œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž'์˜ ๊ฒฝ์šฐ์—๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ ํšจํ•œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž -> ๊ณต๋ฐฑ์ด ์—†์–ด์•ผ ํ•จ, ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์•ˆ๋จ, $์™€ _ ๋ฅผ ์ œ์™ธํ•œ ํŠน์ˆ˜๋ฌธ์ž ์•ˆ๋จ
key๊ฐ€ ์œ ํšจํ•œ ๋ณ€์ˆ˜ ์‹๋ณ„์ž๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ '๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•'์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด ํ‘œ๊ธฐ๋ฒ•์€ key์— ์–ด๋–ค ๋ฌธ์ž์—ด์ด ์žˆ๋˜์ง€ ์ƒ๊ด€์—†์ด ๋™์ž‘ํ•œ๋‹ค.

 

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•

๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ํ‚ค๋กœ ์‚ฌ์šฉํ•œ ๊ฒƒ๊ณผ ๊ฐ™์ด ๋ฌธ์ž์—ด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋ฅผ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    const user = {
      name : '๋นŒ๋ผ๊ฐฑ',
      gender: '๐Ÿšบ',
      'favorite food' : '๐Ÿ•' 
    } 

    let food = 'favorite food'
    user[food] = '๐Ÿ—'

    alert(user[food]) // ๐Ÿ—

๋ณ€์ˆ˜ food๋Š” ๋Ÿฐํƒ€์ž„์— ํ‰๊ฐ€๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ฐ’ ๋ณ€๊ฒฝ ๋“ฑ์— ๋”ฐ๋ผ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ๋“ , ํ‰๊ฐ€๊ฐ€ ๋๋‚œ ์ดํ›„์˜ ๊ฒฐ๊ณผ๊ฐ€ ํ”„๋กœํผํ‹ฐ key๋กœ ์‚ฌ์šฉ๋œ๋‹ค. ์ด ๋ถ€๋ถ„์„ ์‘์šฉํ•œ๋‹ค๋ฉด ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

    const user = {
        name : '๋นŒ๋ผ๊ฐฑ',
          gender: '๐Ÿšบ',
      'favorite food' : '๐Ÿ•' 
    }
    let key = prompt("์‚ฌ์šฉ์ž์˜ ์–ด๋–ค ์ •๋ณด๋ฅผ ์–ป๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”?", "gender");

    alert(user[key]) -> ์ถœ๋ ฅ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€ ํ™•์ธ
    alert(user.key) -> undefined

๊ฐœ๋ฐœ์ž ๋ชจ๋“œ console ์ฐฝ์—์„œ ์ถœ๋ ฅํ•ด๋ณด์•˜๋‹ค!

ํ•˜์ง€๋งŒ ์  ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ๋Š” ์œ„์™€ ๊ฐ™์€ ๋ฐฉ์‹์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. 

 

eslint ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๊ฐ€๋…์„ฑ๊ณผ ๊ฐ™์€ ์ธก๋ฉด์—์„œ ์  ํ‘œ๊ธฐ๋ฒ•์„ ๊ถŒ์žฅํ•œ๋‹ค. ํ•˜์ง€๋งŒ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์ด ๋ณ€์ˆ˜์ธ ๊ฒฝ์šฐ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์ด ํ•„์š”ํ•จ

https://eslint.org/docs/rules/dot-notation

 

dot-notation

 

eslint.org

๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ

๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด ์•ˆ์˜ ํ”„๋กœํผํ‹ฐ ํ‚ค๊ฐ€ ๋Œ€๊ด„ํ˜ธ๋กœ ๋‘˜๋Ÿฌ์‹ธ์—ฌ ์žˆ๋Š” ๊ฒฝ์šฐ, ๊ณ„์‚ฐ๋œ ํ”„๋กœํผํ‹ฐ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

let food = prompt("๋จน๊ณ ์‹ถ์€ ์Œ์‹์€?", "์˜ค๋ฆฌ์ฃผ๋ฌผ๋Ÿญ")

let menu = {
	[food] : 12000 //๋ณ€์ˆ˜ food ์—์„œ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋™์ ์œผ๋กœ ๋ฐ›์•„์˜ด.
}

alert(menu.์˜ค๋ฆฌ์ฃผ๋ฌผ๋Ÿญ) //food์— ์˜ค๋ฆฌ์ฃผ๋ฌผ๋Ÿญ์ด ํ• ๋‹น๋˜์–ด 12000์ด ์ถœ๋ ฅ๋œ๋‹ค.

์œ„ ์˜ˆ์‹œ์—์„œ๋Š” [food] ๋Š” ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์„ ๋ณ€์ˆ˜ food์—์„œ ๊ฐ€์ ธ์˜ค๊ฒ ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. 

์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค. 

let food = prompt("๋จน๊ณ ์‹ถ์€ ์Œ์‹์€?", "์˜ค๋ฆฌ์ฃผ๋ฌผ๋Ÿญ")
let menu = {}

menu[food] = 12000

๋˜๋Š” 

let food = '์˜ค๋ฆฌ์ฃผ๋ฌผ๋Ÿญ'
let menu = {
	['spicy' + food] : 12000 //menu.spicy์˜ค๋ฆฌ์ฃผ๋ฌผ๋Ÿญ = 12000
}

์œ„์™€ ๊ฐ™์ด ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„์— ๋ณ€์ˆ˜์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ๋„ ์žˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์€ ํ”„๋กœํผํ‹ฐ ์ด๋ฆ„๊ณผ ๊ฐ’์˜ ์ œ์•ฝ์„ ์—†์• ์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋Ÿฐ ์ ์—์„œ ํ›จ์”ฌ ๊ฐ•๋ ฅํ•˜์ง€๋งŒ ์ž‘์„ฑํ•˜๊ธฐ๋„ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ์ฝ๊ธฐ์—๋„ ๋ณต์žกํ•œ ๋‹จ์ ์ด ์žˆ๋‹ค. 

 

๋‹จ์ถ• ํ”„๋กœํผํ‹ฐ

ํ”„๋กœํผํ‹ฐ ๊ฐ’์„ ๊ธฐ์กด ๋ณ€์ˆ˜์—์„œ ๋ฐ›์•„์™€ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด์ž. 

function makeUser(name, age){
	return{
    	name : name, 
        age : age
    }
}

let user = makeUser('๋นŒ๋ผ๊ฐฑ', '26')
alert(user.name) //๋นŒ๋ผ๊ฐฑ

์œ„ ์˜ˆ์‹œ์˜ ํ”„๋กœํผํ‹ฐ๋“ค์€ ์ด๋ฆ„๊ณผ ๊ฐ’์ด ๋ณ€์ˆ˜์˜ ์ด๋ฆ„๊ณผ ๋™์ผํ•˜๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒฝ์šฐ 'ํ”„๋กœํผํ‹ฐ ๊ฐ’ ๋‹จ์ถ• ๊ตฌ๋ฌธ'์„ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๋ฅผ ์งง๊ฒŒ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. `name : name` ๋Œ€์‹  `name`๋งŒ ์ ์–ด์ฃผ์–ด๋„ ํ”„๋กœํผํ‹ฐ๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ! 

function makeUser(name, age) {
  return {
    name, // name: name ๊ณผ ๊ฐ™์Œ
    age,  // age: age ์™€ ๊ฐ™์Œ
    address : '์„œ์šธํŠน๋ณ„์‹œ ๋ฌด์Šจ๊ตฌ ๋ฌด์Šจ๋™' // ์ผ๋ฐ˜ ํ”„๋กœํผํ‹ฐ์™€ ๋‹จ์ถ• ํ”„๋กœํผํ‹ฐ๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
  };
}

 

 

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

web component API ์‚ฌ์šฉ๊ธฐ (1) _๊ทธ๊ฒŒ ๋ญ”๋ฐ?  (1) 2022.07.17