자바스크립트 객체
객체
자바스크립트에서는 원시 자료형을 제외한 나머지 자료형은 모두 객체이다.
원시 자료형과 달리 객체는 다양한 데이터를 담을 수 있고 키(key)와 값(value)으로 구성된 프로퍼티를 여러 개 넣을 수 있다.
객체의 값은 자바스크립트에서 사용할 수 있는 모든 값이 허용되며 함수도 가능하다.
const Owner = { |
객체의 값을 프로퍼티(property)라고 부르며 프로퍼티가 함수인 경우 메서드(method)라고 부른다.
객체의 생성
객체를 생성하는 방법은 아래와 같다.
- 객체 리터럴
- 생성자 함수
- Object.create 메서드
- 클래스
객체 리터럴
가장 일반적인 객체 생성 방법으로 중괄호를 사용하고 중괄호 내부에 프로퍼티를 정의하면 된다.
const User = { |
생성자 함수
생성자 함수를 사용하여 객체를 생성할 수 있다. 원시 자료형도 생성자 함수로 객체를 생성할 수 있다.
생성자 함수 사용 시 반드시 new 키워드와 같이 호출해야 한다.
만약 생성자 함수에서 객체를 반환한다면 결괏값은 반환한 객체가 되고 객체가 아닌 다른 값을 반환한다면
생성자 함수에서 선언한 프로퍼티를 가진 객체가 반환된다.
// 1. 생성자 함수를 정의하여 사용 |
Object.create 메서드
Object 객체의 메서드로 인자로 부여한 객체를 프로토타입으로 하는 새 객체를 생성한다.
두 번째 인자에 객체의 프로퍼티 정보를 입력하면 해당 프로퍼티를 가진 객체가 생성된다.
function ParentObject() { |
클래스
ES6부터 사용할 수 있게 된 문법으로 class 키워드로 다른 언어의 클래스와 유사한 객체를 생성할 수 있다.
생성자 함수와 차이점은 클래스의 경우 호이스팅이 발생하지 않는다는 점이다.
클래스 내부에서는 constructor 메서드를 사용할 수 있는데 이는 클래스를 초기화하는 특수한 메서드로 클래스 내부에 한 개만 존재할 수 있다.
class UserTemplate { |
프로퍼티
객체의 프로퍼티는 키(key)와 값(value)으로 구성되며 각 프로퍼티는 쉼표로 구분한다. 키와 값에 사용할 수 있는 값은 다음과 같다.
- 프로퍼티 키 : 모든 문자열 또는 심볼
- 프로퍼티 값 : 자바스크립트에서 사용 가능한 모든 값
const zoo = { |
프로퍼티 생성과 접근
객체 생성 후 프로퍼티를 생성하거나 접근하기 위해서 객체 뒤에 .이나 []를 사용해야한다.
.은 일반적인 키를 선언하거나 해당하는 키로 접근하기 위해 사용하고 []는 접근하려는 키가 문자열로 평가되어야 하거나 계산이 필요할 때 사용한다.
const myObject = {}; |
프로퍼티 삭제
delete 연산자를 사용하여 프로퍼티를 삭제할 수 있다. 단, 객체 자체를 삭제하는 것은 불가능하다.
const myObject = { |
