๐ŸŽจ Frontend/JavaScript

๐ŸฆVanilla JS โ‘ค ๊ฐ์ฒด - (1) ๋ฆฌํ„ฐ๋Ÿด ๊ฐ์ฒด

kongmi 2023. 3. 28. 12:55

๊ฐ์ฒด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜ ์ž…๋‹ˆ๋‹ค.

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๊ฐ์ฒด๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด ๋˜๋Š” ๊ธฐ๋ณธ,์›์‹œํƒ€์ž…(primitive type) ๊ฐ’์„ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋Š” ์ปจํ…Œ์ด๋„ˆ ์ž…๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด๋Š” ์ค‘๊ด„ํ˜ธ {}๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งŒ๋“ค๋ฉฐ, ์†์„ฑ(property)๊ณผ ๊ฐ’(value)์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์€ [๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด]๊ณผ [ํด๋ž˜์Šค]๊ฐ€ ์žˆ์ง€๋งŒ, [๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด]๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์  ์ž…๋‹ˆ๋‹ค.
  • ์›น ๊ฐœ๋ฐœ์—์„œ ๋ธŒ๋ผ์šฐ์ € ๊ฐ์ฒด ๋ชจ๋ธ(BOM)๊ณผ ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(DOM) ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›น ํŽ˜์ด์ง€๋ฅผ ์กฐ์ž‘ ๋ฐ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด

     ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์€ ๋ฐฑ์—”๋“œ์™€ ํ†ต์‹ ํ•  ๋•Œ ์ฃผ๋กœ ์“ฐ์ž…๋‹ˆ๋‹ค.
     ๐Ÿ“Œ ์˜ˆ) ํšŒ์›์ •๋ณด 3000๋ฒˆ ํฌํŠธ์—์„œ 8211๋ฒˆ ํฌํŠธ๋กœ ์ „๋‹ฌ (BE : 8211๋ฒˆ / FE : 3000๋ฒˆ) 


- ์•Œ์•„๋‘๋ฉด ์ข‹์€! Tip!
FE : ๋ฆฌํ„ฐ๋Ÿด ๊ฐ์ฒด & Map
BE : ArrayList & Map

* ์ „๋‹ฌํ•  ๋•Œ๋Š” ๋ฆฌํ„ฐ๋Ÿด ๊ฐ์ฒด
* ์ •๋ณด๋ฅผ ๋ฐ›์„ ๋•Œ๋Š” Map (๊ฐ์ฒด ๋‹จ์œ„๋กœ ํ•œ๋ฒˆ์— ..)

์ƒ์„ฑ ๋ฐฉ๋ฒ•

let obj = {
  property1: value1,
  property2: value2,
  method1: function() { ... },
  method2: function() { ... }
};

๊ฐ์ฒด ์†์„ฑ

  • ๊ฐ์ฒด ์†์„ฑ์€ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ๋ณ€์ˆ˜๋กœ ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
const person = {
  title : "ํฌ๋ผ์ž„์”ฌ2",
  name : "๋ฐ•์ง€์œค",
  age : 44,
  job : "์•„๋‚˜์šด์„œ"
};
console.log(person.age); // 44
  • ๊ฐ์ฒด ์•ˆ์— ๋‹ค๋ฅธ ๊ฐ์ฒด๋‚˜ ํ•จ์ˆ˜๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
const person20 = { // ์ค‘์ฒฉ
  name : {
    firstName : "์ง€์œค",
    lastName : "๋ฐ•"
  },
  age : 44,
  isAdult : true,
  printInfo : function() {
    return this.name;
  }
};
console.log(person20.printInfo().firstName); // ์ง€์œค
console.log(person20[`isAdult`]); // true

person20.name.firstName = "Jiyoon";
person20.name.lastName = "Park";
console.log(person20.name); // {firstName : 'Jiyoon', lastName: 'Park'}

๐Ÿ’ก ๊ฐ์ฒด ์†์„ฑ์— ํ‚ค๋กœ ์ ‘๊ทผํ•ด ๊ฐ’์„ ์žฌํ• ๋‹นํ•˜๋ฉด ๊ธฐ์กด ์†์„ฑ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

      ๋งŒ์•ฝ ํ•ด๋‹น ํ‚ค๊ฐ€ ์—†๋‹ค๋ฉด ํ•ด๋‹น ํ‚ค์™€ ๊ฐ’์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ƒˆ๋กœ์šด ์†์„ฑ์ด ๊ฐ์ฒด์— ์ถ”๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

const carInfo = {};
carInfo.name = "ํ…Œ์Šฌ๋ผ";
carInfo.year = 2022;
carInfo.maxSpeed = 300;
console.log(carInfo); // { name: 'ํ…Œ์Šฌ๋ผ', year: 2022, maxSpeed: 300 }

๐Ÿ’ก ๊ฐ์ฒด ์†์„ฑ ์•ž์— delete ํ‚ค์›Œ๋“œ๋ฅผ ๋ช…์‹œํ•˜๋ฉด ํ•ด๋‹น ์†์„ฑ์ด ์‚ญ์ œ ๋ฉ๋‹ˆ๋‹ค.

delete carInfo.maxSpeed;
console.log(carInfo); // { name: 'ํ…Œ์Šฌ๋ผ', year: 2022 }

๊ฐ์ฒด ๋ฉ”์†Œ๋“œ

  • ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ๋Š” ๊ฐ์ฒด ๋‚ด๋ถ€์—์„œ ๋™์ž‘ํ•˜๋Š” ํ•จ์ˆ˜ ์ž…๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ๋Š” ์†์„ฑ์œผ๋กœ ์ •์˜ ๋ฉ๋‹ˆ๋‹ค.
let person3 = {
  name : "ํ™๊ธธ๋™",
  age : 18,
  sayHello : function() {
    console.log(`Hello~ my name is ${this.name}`);
  }
};
person3.sayHello(); // Hello~ my name is ํ™๊ธธ๋™

๊ฐ์ฒด ์ƒ์„ฑ์ž(new)

  • ๊ฐ์ฒด ์ƒ์„ฑ์ž๋Š” ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ์ฒด ์ƒ์„ฑ์ž๋Š” ํ•จ์ˆ˜๋กœ ์ •์˜ ๋ฉ๋‹ˆ๋‹ค.
function Person(name, age) {
  this.name = name;
  this.age = age;
  this.sayHello = function() {
    console.log(`Hello.. my name is ${this.name}`);
  };
};

let person4 = new Person("์ด์ˆœ์‹ ", 55);
person4.sayHello(); // Hello.. my name is ์ด์ˆœ์‹ 
console.log(person4); // Person { name: '์ด์ˆœ์‹ ', age: 55, sayHello: [Function (anonymous)] }