Object
Object Literal
- 가장 일반적인 객체 생성 방식입니다.
- 중괄호를 사용하여 객체를 생성합니다.
let person = {
firstName: 'Edmund',
lastName: 'Festa',
};
console.log(person);
Object Constructor
- new 키워드와 Object 생성자 함수를 호출하여 빈 객체를 생성한 뒤 프로퍼티나 메소드를 추가할 수 있습니다.
let person = new Object();
person.firstName = 'Edmund';
person.lastName = 'Festa';
console.log(person);
Constructor Function
- 이전 방법은 같은 객체를 생성하려면 매번 프로퍼티나 메소드를 정의해줘야 합니다.
- 생성자 함수를 사용한다면 객체를 생성하기 위한 클래스처럼 사용할 수 있습니다.
- 생상자 함수 내에 this는 생성될 인스턴스를 가르킵니다.
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
let person1 = new Person('Edmund', 'Festa');
let person2 = new Person('Mark', 'Hardman');
Class
class Person {
constructor(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
}
let person1 = new Person('Edmund', 'Festa');
let person2 = new Person('Mark', 'Hardman');
Prototype
- 자바스크립트는 다른 객체지향 프로그래밍 언어와 다르게 프로토타입 기반 객체 지향 프로그래밍 언어입니다.
- 자바스크립트는 클래스 없이 객체를 생성할 수 있습니다. 그리고 모든 객체는 자신의 부모 객체와 연결되어 있습니다. 이 부모 객체를 프로토타입이라 합니다.
- 이 말은 클래스 기반 언어에서 Inheritance를 사용하는 것과 다르게, 객체를 프로토타입으로 복제해 객체의 동작 방식을 다시 사용할 수 있습니다.
- prototype은 클래스에서 인스턴스로 만들어질 때 공통적으로 가지고 있는 것을 정의할 수 있습니다.
Constructor
- 클래스에서 오직 하나만 존재하는 생성자 메소드입니다.
- 생성자의 역할은 같은 속성과 메소드를 공유하는 인스턴스를 여러 개 만들 수 있도록 해줍니다. 즉, 인스턴스를 생성하는 역할을 합니다.
**super**
키워드를 이용하여 상위 클래스의 생성자 메소드를 호출할 수 있습니다.
**Object.create**
메소드를 이용할 수도 있습니다.
proto