자바스크립트는 '객체' 기반 언어입니다.
객체는 프로퍼티와 메서드로 구성된 집합체입니다.
let person = {
name: 'Lee',
age: 20, // (키: 값)으로 구성된 프로퍼티
};
객체를 통해 상태와 동작을 하나의 단위로 구조화할 수 있습니다.
객체를 만드는 방식에는 여러가지가 있지만,
'객체 리터럴' 방식이 주로 쓰입니다.
객체 리터럴 방식은 객체를 {} 중괄호 안에서 정의합니다.
let person = {
name: 'Lee',
age: 20,
};
console.log(person) // {name: 'Lee', age: 20}
객체는 프로퍼티의 집합이며, 프로퍼티는 키와 값으로 구성됩니다.
프로퍼티 키는 식별자 네이밍 규칙에 따라 차이가 있습니다.
let person = {
firstname: 'Sungwon', // 식별자 네이밍 규칙을 준수하는 프로퍼티 키
'last-name': 'Jo', // 식별자 네이밍 규칙을 준수하지 않는 프로퍼티 키
};
프로퍼티에 접근하는 방법은 두 가지입니다.
let person = {
name: 'Lee',
};
console.log(person.name); // 마침표 표기법
console.log(person['name']); // 대괄호 표기법
대괄호 표기법의 경우, 프로퍼티 키를 반드시 따옴표로 감싼 문자열이어야 합니다. (그렇지 않을 경우, undefined를 반환합니다.)
마침표 표기법과 대괄호 표기법으로 갱신할 수 있습니다.
let person = {
name: 'Lee',
};
person.name = 'Jo'; // 마침표 표기법으로 갱신
person['name'] = 'Jo'; // 대괄호 표기법으로 갱신
console.log(person); // {name: 'Jo'}
존재하지 않은 프로퍼티에 값을 마침표 표기법과 대괄호 표기법으로 추가할 수 있습니다.
let person = {
name: 'Lee',
};
person.age = 20; // 마침표 표기법으로 생성
person.gender = 'Male'; // 대괄호 표기법으로 생성
console.log(person); // {name: 'Lee', age: 20, gender: 'Male'}
delete 연산자로 삭제할 수 있습니다.
let person = {
name: 'Lee',
age: 20
};
delete person.age;
console.log(person); // {name: 'Lee'}
프로퍼티의 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라고 부릅니다.
즉, 메서드는 객체 안에 있는 함수를 의미합니다.
let obj = {
sayHello = function () {
return 'Hello JS!';
}
};
console.log(obj.sayHello()); // Hello JS!
변수를 활용하여 프로퍼티를 축약 표현할 수 있습니다.
let x = 1, y = 2;
let obj = {
x: x,
y: y
};
console.log(obj); // {x: 1, y: 2}
프로퍼티 키와 값을 생성할 때, 변수를 활용해서 계산된 결과로 생성할 수 있습니다.
let prefix = 'prop';
let i = 0;
let obj = {};
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
obj[prefix + '-' + ++i] = i;
console.log(obj); // {prop-1: 1, prop-2: 2, prop-3: 3}
메서드를 축약하여 표현 가능합니다.
let obj = {
sayHello = function () {
return 'Hello JS!';
}
};
console.log(obj.sayHello()); // Hello JS!
let obj = {
// 메서드 축약 표현
sayHello() {
return 'Hello JS!';
}
};
console.log(obj.sayHello()); // Hello JS!