TIL 10 | ๊ฐ์ฒด(object)

dabin *.โ—Ÿ(หŠแ—จห‹)โ—ž.*ยท2021๋…„ 8์›” 9์ผ
0

Javascript

๋ชฉ๋ก ๋ณด๊ธฐ
9/25
post-thumbnail

๊ฐ์ฒด(object)๋ž€?

๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ ํƒ€์ž… ์ค‘์˜ ํ•˜๋‚˜๋กœ, ์—ฌ๋Ÿฌ ์†์„ฑ์„ ํ•˜๋‚˜์˜ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ •๋ณด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด Index number์„ ๊ธฐ์–ตํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

๊ฐ์ฒด์˜ ํ•„์š”์„ฑ

  • ๊ด€๋ จ์žˆ๋Š” ์ •๋ณด์˜ ์—ฐ๊ฒฐ
  • Index number์—†์ด key๊ฐ’์œผ๋กœ ์ •๋ณด์— ์‰ฝ๊ฒŒ ์ ‘๊ทผ
  • ์ฝ”๋“œ ์œ ์ง€๋ณด์ˆ˜์˜ ์šฉ์ด์„ฑ

{key: value}

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด๋Š” key ๊ฐ’๊ณผ key์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ์ธ value ๊ฐ’์ด ์Œ์œผ๋กœ ์ด๋ฃจ์–ด์ง„ property๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ๊ฐ์ฒด๋Š” {} ์•ˆ์— key์™€ value๋ฅผ ์Œ์œผ๋กœ ๋ฌถ์–ด ๋งŒ๋“ค๊ณ , key๊ฐ’์ด ์—ฌ๋Ÿฌ๊ฐœ์ผ ๋•Œ๋Š” ,๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

๊ฐ์ฒด ๋งŒ๋“ค๊ธฐ

//๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด : ๋ณ€์ˆ˜์ฒ˜๋Ÿผ ๊ฐ์ฒด ์ƒ์„ฑ
let myself = {
  name : '์•ˆ๋‹ค๋นˆ',
  bloodType: 'Aํ˜•',
  mbti: 'ENFJ',
};
console.log(myself);
//{ name : '์•ˆ๋‹ค๋นˆ', bloodType: 'Aํ˜•', mbti: 'ENFJ'}
//์ƒ์„ฑ์ž ํ•จ์ˆ˜
let myself = new Object()

myself.name = '์•ˆ๋‹ค๋นˆ';
myself.bloodType =  'Aํ˜•';
myself.mbti = 'ENFJ';

console.log(myself);
//{ name : '์•ˆ๋‹ค๋นˆ', bloodType: 'Aํ˜•', mbti: 'ENFJ'}

์ฐธ๊ณ 

๊ฐ์ฒด ์†์„ฑ ์ ‘๊ทผ

๊ฐ์ฒด ์†์„ฑ ์ ‘๊ทผ ๋ฐฉ๋ฒ•์€ dot notation๊ณผ bracket notation ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค.

dot notation

  • key๊ฐ€ alphanumeric, _, $๋กœ ๊ตฌ์„ฑ
  • ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋‹ค.
  • variables๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์—†๋‹ค.

bracket notation

  • string์ด๊ฑฐ๋‚˜, string์„ ์ฐธ์กฐํ•˜๋Š” variable
  • variables, spaces ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•ด๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.
let obj = {
    "hat": "ballcap",
    "shirt": "jersey",
    "shoes": "cleats"
  };

//dotNotation 
//๋งˆ์นจํ‘œ ์—ฐ์‚ฐ์ž(.)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด์˜ property ๊ฐ’์— ์ ‘๊ทผ
console.log(obj.hat) //"ballcap"
console.log(obj.shirt)  //"jersey"
//Bracket Notation
console.log(obj['hat']) //"ballcap"
console.log(obj['shirt'])  //"jersey"

//๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ๊ฐ์ฒด ์†์„ฑ ์ ‘๊ทผ
let testObj = {
  12: "Namath",
  16: "Montana",
  19: "Unitas"
};

let playerNumber = 16;   
let player = testObj[playerNumber]
console.log(player); //"Montana"
//testObj.playerNumber์€ undefined

๊ฐ์ฒด ์ˆ˜์ •

let myDog = {
    "name": "Coder",
    "legs": 4,
    "tails": 1,
    "friends": ["freeCodeCamp Campers"]
  };

myDog.friends = ['dabin', 'ball']
console.log(myDog['friends']); //["dabin", "ball"]

myDog['name'] = '๋‹ฌ๋ง์ด'
console.log(myDog.name);//"๋‹ฌ๋ง์ด"

๊ฐ์ฒด ์†์„ฑ ์ถ”๊ฐ€

let myDog = {
    "name": "Happy Coder",
    "legs": 4,
    "tails": 1,
    "friends": ["Wecode Bootcamp"]
  };
  
myDog['bark'] = 'woof'  // ๋˜๋Š” myDog.bark = 'woof'
console.log(myDog);
/*
{
  bark: "woof",
  friends: ["Wecode Bootcamp"],
  legs: 4,
  name: "Happy Coder",
  tails: 1
}
*/

๊ฐ์ฒด ์†์„ฑ ์‚ญ์ œ

let ourDog = {
 "name": "Camper",
 "legs": 4,
 "tails": 1,
 "friends": ["everything!"],
 "bark": "bow-wow"
};
 
delete ourDog.bark; //๋˜๋Š” delete ourDog['bark']
console.log(ourDog);
/*
{
  friends: ["everything!"],
  legs: 4,
  name: "Camper",
  tails: 1
}
*/

์ค‘์ฒฉ ๊ฐ์ฒด ์ ‘๊ทผ

let myStorage = {
    "car": {
      "inside": {
        "glove box": "maps",
        "passenger seat": "crumbs"
       },
      "outside": {
        "trunk": "jack"
      }
    }
  };
  
gloveBoxContents = myStorage['car']['inside']['glove box'];
console.log(gloveBoxContents); //"maps"

์ค‘์ฒฉ ๊ฐ์ฒด์— ๋ฐฐ์—ด์ด ํฌํ•จ๋˜์–ด ์žˆ์„ ๋•Œ ์ ‘๊ทผ๋ฒ•์€ index number์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

let myPlants = [
    {
      type: "flowers",
      list: [
        "rose",
        "tulip",
        "dandelion"
      ]
    },
    {
      type: "trees",
      list: [
        "fir",
        "pine",
        "birch"
      ]
    }
  ];
  
let foundValue = myPlants[1]['list'][1] //๋˜๋Š” myPlants[1].list[1]
console.log(foundValue); //"pine"

๋ฐฐ์—ด์˜ ํƒ€์ž…

console.log(typeof [1, 2, 3]) //"object"


์–ด๋–ค ์ƒ์„ฑ์ž ํ•จ์ˆ˜์ด๋“  prototype(์›ํ˜•)์€ ๋ฐ˜๋“œ์‹œ ๊ฐ์ฒด๊ธฐ ๋•Œ๋ฌธ์— Object.prototype์ด ์–ธ์ œ๋‚˜ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ ์ตœ์ƒ๋‹จ์— ์กด์žฌํ•œ๋‹ค. ๋ฐฐ์—ด์˜ ํ”„๋กœํ† ํƒ€์ž…์€ Array.prototype์ด๊ณ , ์ƒ๋žต ๊ฐ€๋Šฅํ•œ __proto__๋ฅผ ๋”ฐ๋ผ Object.prototype์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฐฐ์—ด์˜ ํƒ€์ž…๋„ ๊ฐ์ฒด๋‹ค.
https://velog.io/@dabin0219/์ฝ”์–ด-์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ-06ํ”„๋กœํ† ํƒ€์ž…-07ํด๋ž˜์Šค

profile
๋ชจ๋ฅด๋Š”๊ฒƒํˆฌ์„ฑ์ด

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