JavaScript

[JS] 코딩테스트 008 - 객체****

Irene1988 2025. 2. 16. 11:53
    <h1>문제8 : 객체의 키 이름 중복</h1>
    <div>
        자바스크립트 객체를 다음과 같이 만들었다. 
        출력값을 입력하시오. (출력값은 공백을 넣지 않습니다. )
    </div>
    
let d = {
    'height':180,
    'weight':78,
    'weight':84,
    'temperature':36,
    'eyesight':1
};

console.log(d['weight']);  // 84 출력
console.log(d.height); // 84 출력

 

 

자바스크립트 객체란?

자바스크립트에서 객체는 키(key)-값(value) 쌍으로 이루어진 데이터 구조야. 객체를 사용하면 여러 데이터를 하나로 묶어서 관리할 수 있다.

const person = {
  name: "홍길동",
  age: 25,
  greet: function() {
    console.log(`안녕! 나는 ${this.name}이야.`);
  }
};

console.log(person.name); // "홍길동"
console.log(person.age);  // 25
person.greet();           // "안녕! 나는 홍길동이야."

 

** 클래스 없이도 객체를 만들 수 있음

const car = {
  brand: "Tesla",
  model: "Model S",
  drive: function() {
    console.log("부릉부릉~🚗");
  }
};

car.drive(); // "부릉부릉~🚗"

 

ES6부터는 class를 지원하기 때문에, 자바처럼 클래스를 만들 수도 있다.

class Car {
  constructor(brand, model) {
    this.brand = brand;
    this.model = model;
  }

  drive() {
    console.log(`${this.brand} ${this.model}가 달립니다!`);
  }
}

const myCar = new Car("Hyundai", "Sonata");
myCar.drive(); // "Hyundai Sonata가 달립니다!"

 

동적 속성 추가 가능

자바스크립트 객체는 동적으로 속성을 추가/삭제할 수 있어.
자바에서는 클래스에 정의된 필드만 가질 수 있지만, JS 객체는 자유롭게 속성을 추가할 수 있어.

const person = { name: "홍길동" };
person.age = 25;  // 동적으로 속성 추가
console.log(person.age); // 25

delete person.age;  // 속성 삭제
console.log(person.age); // undefined

 


프로토타입 기반 상속

자바는 클래스 기반 상속을 사용하지만, 자바스크립트는 프로토타입 기반 상속을 사용해!
객체가 다른 객체를 상속받을 때, prototype을 이용해 기능을 확장할 수 있어.

const animal = {
  makeSound: function() {
    console.log("동물이 소리를 낸다!");
  }
};

const dog = Object.create(animal);
dog.makeSound(); // "동물이 소리를 낸다!"

자바스크립트 객체의 다양한 생성 방법

(1) 객체 리터럴 방식 (가장 많이 사용!)

const person = {
  name: "홍길동",
  age: 30
};

 

(2) 생성자 함수 (ES6 이전)

function Person(name, age) {
  this.name = name;
  this.age = age;
}

const person1 = new Person("철수", 25);
console.log(person1.name); // "철수"

(3) class 문법 (ES6 이후)

class Person {
  constructor(name, age) {
    this.name = name;
    this.age = age;
  }
}

const person2 = new Person("영희", 28);
console.log(person2.name); // "영희"

 


 

(4) Object.create()

const basePerson = { greet: function() { console.log("Hello!"); } };
const newPerson = Object.create(basePerson);
newPerson.greet(); // "Hello!"

 

결론!

자바스크립트(JavaScript): 객체 리터럴을 사용해 바로 만들 수 있음.
✅ 동적으로 속성을 추가/삭제할 수 있음.
✅ 클래스(class)를 지원하지만, 기존에는 프로토타입 기반 상속을 사용함.

 

 

**위 포스팅은 챗GPT 답변을 기반으로 작성되었습니다!