📖 [JS] 객체
자바스크립트에서 객체는 데이터와 기능을 함께 저장할 수 있는 구조적인 단위입니다.
객체는 키와 값으로 구성된 속성(Property)들의 모임입니다.
키는 문자열 또는 심벌이고, 값은 어떠한 데이터 타입이든 될 수 있습니다.
자바스크립트에서 객체는 여러 관련 정보를 하나의 단위로 묶는 데 유용합니다.
// 객체 리터럴 사용
let person = {
name:"john",
age: 30,
greet: function() {
console.log('Hello, ' + this.name);
}
};
// name, age와 같은 객체의 정보값들을 객체 property 또는 객체 속성이라고 부릅니다.
여기서 `person` 객체는 `name`, `age`라는 두 개의 속성(property)과 `greet`라는 메서드를 가지고 있습니다.
// new Object() 사용
let person = new Object();
person.name = 'John';
person.age = 30;
person.greet = function() {
console.log('Hello, ' + this.name);
};
// 생성자 함수 사용
function Person(name, age) {
this.name = name;
this.age = age;
this.greet = function() {
console.log('Hello, ' + this.name);
};
}
let person1 = new Person('John', 30);
let person2 = new Person('Jane', 25);
📘 객체 Property(속성)을 다루는 방법
객체의 속성에 접근하거나 변경하는 방법은 두 가지가 있습니다.
점 표기법
// 객체 이름 뒤에 점을 찍고, 그 다음에 접근하고자 하는 property의 키를 적어주면 됨
console.log(person.name); // John
person.age = 31;
대괄호 표기법
// []안에 프로퍼티의 키를 명시하는 방법
// "" 함께 문자열로 작성해야한다.
let age = person["age"]
console.log(person['name']); // John
person['age'] = 31;
괄호표 기법에서는 변수에 접근하고자 하는 key 값을 담아서
property를 꺼내오도록 설정할 수 있기 때문에,
동적으로 property를 변화시키면서 사용해야 하는 경우에는 괄호표기법을 사용하는 것이 좋습니다.
그런 상황이 아닌 경우에는 점 표기법이 간결하여 이용하는 것이 좋습니다.
새로운 프로퍼티를 추가하는 방법
person.job = "doctor"
person["food"] = "bulgogi"
프로퍼티를 수정하는 방법
person.job = "teacher"
person["food"] = "apple"
프로퍼티를 삭제하는 방법
// Delete 연산자 사용
delete person.job;
delete person["food"];
프로퍼티 존재 유무를 확인하는 방법
// in 연산자를 사용하면된다.
let result1 ="name" in person
// result1이라는 변수의 문자열로 name이라는 key가 person 안에 있는지 확인하는 연산자
메서드와 `this`
객체의 메서드는 객체의 속성에 접근할 수 있으며, 이때 `this` 키워드를 사용합니다.
`this`는 메서드가 속해 있는 객체를 참조합니다.
let person = {
name: 'John',
age: 30,
greet: function() {
console.log('Hello, ' + this.name);
}
};
person.greet(); // Hello, John
📗 상수 객체
// 상수 객체
const animal = {
type: "고양이",
name: "나비",
color: "black"
};
animal.age = 2; // 추가
animal.name = "검은색" // 수정
delete animal.color; // 삭제
animal = 123;
console.log(animal);
상수에서 저장된 객체도 property를 추가하거나 수정하거나 삭제하는 게 가능하다.
상수라는 것은 새로운 값을 할당하지 못하는 그런 변수를 말하는 것이다.
animal = 123;처럼 이런 식으로 새로운 값을 할당해 버리는 것은 문제가 있는 반면
animal 내부에 저장되어 있는 객체 값의 property를 수정하는 건 아무런 문제가 되지 않는다.
따라서 상수에다가 객체를 보관한다고 하더라도 property를 추가하거나 수정하거나 삭제하는
조작은 얼마든지 가능하다.
📙 메서드
메서드는 객체 property 중에 값이 함수인 property를 말한다.
const person = {
name: "kim",
sayHi: function () {
console.log("안녕");
},
};
person.sayHi();
=========================
const person = {
name: "kim",
// 화살표 함수 적용
sayHi: () => {
console.log("안녕");
},
};
person.sayHi();
======================
const person = {
name: "kim",
//메서드 선언
sayHi() {
console.log("안녕");
},
};
person.sayHi();
person["sayHi"]();
// method들도 점 표기법과 괄호표기법을 이용해서 호출할 수 있다.
메서드는 보통 객체의 동작을 정의하는 데 사용한다
함수가 아닌 property들이 객체의 정보를 갖고 있다면
함수 property들은 method로서 객체의 동작을 정의한다.
✅ 결론
자바스크립트의 객체는 다양한 데이터와 기능을 하나의 구조 안에 모아서 관리할 수 있도록 해주는
매우 유용한 개념입니다. 객체를 통해 더 구조적이고 관리하기 쉬운 코드를 작성할 수 있습니다.