Javascript

[JavaScript] 자바스크립트 | 객체 (Object)

@leem 2025. 3. 19. 17:40
이 글은 드림코딩 유튜브 강의를 보며 학습한 내용을 정리한 JavaScript 복습 노트입니다.

 

1. 객체(Object)

객체는 JavaScript에서 관련된 데이터와 기능을 묶어서 관리하는 데이터 타입입니다. 즉, 하나의 개체(Entity)를 표현하는 방식으로, 여러 속성(데이터)과 메서드(기능)를 포함할 수 있습니다.

 

📌 객체는 key: value 형태로 구성되며,

. 또는 [] 표기법으로 접근할 수 있습니다.

const obj1 = {};  // 'object literal' (객체 리터럴) 문법
const obj2 = new Object(); // 'object constructor' (객체 생성자) 문법

객체 리터럴 {} vs 객체 생성자 new Object()

  • {} 리터럴 방식이 더 직관적이고 간결하여 일반적으로 많이 사용됨.
  • new Object()는 덜 사용되며, 필요할 때만 사용됨.

2. 객체의 속성(Property) 접근 방법

const ellie = { name: 'ellie', age: 4 };
console.log(ellie.name); // 'ellie' (점 표기법)
console.log(ellie['name']); // 'ellie' (대괄호 표기법)

 

📌 점 표기법(.) vs 대괄호 표기법([])

  • obj.key → 점 표기법 (가독성이 좋고 일반적으로 사용됨)
  • obj['key'] → 대괄호 표기법 (동적으로 키를 접근할 때 필요)
  • 동적으로 키를 접근
    • 변수로 키를 지정하여 동적으로 속성에 접근할 수 있음 → 동적인 속성 접근을 활용하면 함수에서 객체의 키를 변경하거나, 반복문에서 여러 속성을 처리할 때 유용함.
function printValue(obj, key) {
  console.log(obj[key]); // 동적으로 키를 접근
}
printValue(ellie, 'name'); // 'ellie'

3. 속성 추가 및 삭제

JavaScript 객체는 동적으로 속성을 추가하거나 삭제할 수 있음.

ellie.hasJob = true; // 속성 추가
console.log(ellie.hasJob); // true

delete ellie.hasJob; // 속성 삭제
console.log(ellie.hasJob); // undefined

📌 동적으로 객체 속성을 조작할 수 있는 것이 JavaScript의 유연한 특징 중 하나!


4. 객체 생성 단축 문법 (Shorthand Property Value)

객체 생성 시 키와 값이 동일할 경우, 단축 문법을 사용할 수 있습니다.

const name = 'hoon';
const person1 = { name, age: 2 };

✅ 키와 변수명이 같다면 { name } 처럼 축약 가능!


5. 생성자 함수 (Constructor Function)

객체를 생성하는 또 다른 방법으로 생성자 함수(Constructor Function) 를 사용할 수 있습니다.

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

const person4 = new Person('elile', 30);
console.log(person4); // Person { name: 'elile', age: 30 }

📌 new 키워드를 사용하여 생성자 함수를 호출하면 자동으로 새로운 객체가 생성됨.


6. in 연산자로 속성 존재 여부 확인

객체 안에 특정 키가 존재하는지 확인할 때 in 연산자를 사용합니다.

console.log('name' in ellie); // true
console.log('age' in ellie); // true
console.log('random' in ellie); // false

객체에 해당 키가 존재하면 true, 없으면 false 반환.


7. 객체 순회 (for..in vs for..of)

for..in 문 (객체의 키 순회)

console.clear();
for (let key in ellie) {
  console.log(key); // 'name', 'age' 출력
}

for..of 문 (배열의 값 순회)

const array = [1, 2, 4, 5];
for (let value of array) {
  console.log(value); // 1, 2, 4, 5 출력
}

✅ for..in 은 객체의 키를 순회하고, for..of 는 배열의 값을 순회합니다.


8. 객체 복사 (Cloning)

얕은 복사 (Shallow Copy)

const user = { name: 'ellie', age: '20' };
const user2 = Object.assign({}, user); // 방법1 
const user3 = {...user}; // 방법2

 

깊은 복사 (Deep Copy) → Object.assign()

// 1. JSON 방식 (단, 함수, Date, undefined 등은 복사 불가)
const user3 = JSON.parse(JSON.stringify(user));

// 2. 구조적 복사 structuredClone (최신 브라우저 지원)
const user4 = structuredClone(user);
복사 방식 중첩 객체 복사 함수/날짜 지원 사용 예시
Object.assign() 얕은 복사
{ ...obj } 얕은 복사
JSON.parse() 깊은 복사 (제한 있음)
structuredClone() 깊은 복사 (권장, 최신)

여러 개의 객체 병합

const fruit1 = { color: 'red' };
const fruit2 = { color: 'blue', size: 'big' };
const mixed = Object.assign({}, fruit1, fruit2);

console.log(mixed.color); // 'blue' (덮어쓰기 됨)
console.log(mixed.size); // 'big'

같은 속성이 있을 경우, 뒤에 오는 객체의 값이 덮어쓰기 됨.


객체는 key: value 쌍으로 구성되며, 동적으로 속성을 추가/삭제할 수 있음.

속성 접근 방법: obj.key(점 표기법) / obj['key'](대괄호 표기법).

객체를 복사할 때 Object.assign()을 사용하면 새로운 객체를 생성 가능!

for..in은 객체의 키를, for..of는 배열의 값을 순회.