객체(Object)
프로퍼티(property)
- 이름과 값으로 구성된 정렬되지 않은 집합
-프로퍼티는 함수도 저장할 수 있음(프로퍼티 메소드)
const userid ={'no':1, 'name':'김사과', 'age':20, 'gender':'여자'};
객체를 생성하는 방법
1. 리터럴 표기법
const 객체명 = {
프로퍼티명1: 값1,
프로퍼티명2: 값2,
...
//프로퍼티 함수
프로퍼티명n: funtion(){
프로퍼티 메소드가 호출되면 실행할 문장;
...
}
}
2.생성자를 이용
funtion 생성자명(매개변수1, 매개변수2..){
this.프로퍼티명1 = 값1;
this.프로퍼티명2 = 값2;
...
this.프로퍼티명n: funtion(){
프로퍼티 메소드가 호출되면 실행할 문장;
...
}
}
const 객체명 = new 생성자명(값1, 값2 ..);
-new 연산자를 사용하여 객체를 생성하고 초기화 할 수 있음
-객체를 생성할 때 사용하는 함수를 생성자라고 한다.
-새롭게 생성되는 객체를 초기화하는 역할
-같은 형태의 객체를 여러개 생성할 때 유리
1 / 2 차이점
1.하나의 객체만 만들 때 -->리터럴 표기법
2. 여러개의 객체를 만들 때 -->생성자를 이용
3.클래스를 이용하기
-내부적으로 생성자가 만들어진다!
const 클래스명 = class {
constructor(매개변수1, 매개변수2 ..){
this.프로퍼티명1 = 값1;
this.프로퍼티명2 = 값2;
...
}
메소드명(매개변수1, 매개변수2 ..){
메소드가 호출되면 실행할 문장;
...
}
}
const 객체명1 = new 클래스명(값1, 값2 ..);
const 객체명2 = new 클래스명(값1, 값2 ..);
-내부적으로 생성자를 이용한 객체 생성 방법과 동일하게 작동한다.
상속
-자바스크립트는 프로토타입 기반의 객체 지향 언어(클래스 기반의 객체 지향 언어와는 다름)
-현재 존재하고 있는 객체의 프로토타입을 사용하여 해당 객체를 복사하고 재사용하는 것.
✅프로토 타입(prototype)
-모든 객체는 프로토타입이라는 객체를 가지고 있음
-모든 객체는 프로토타입으로부터 프로퍼티와 프로퍼티 메소드를 상속받음
-모든 객체는 최소한 하나 이상의 다른 객체로부터 상속을 받으며 상속되는 정보를 제공하는 객체를 프로토타입이라고 함
const dog = new Dog(); //Dog.prototype // 생성자가 prototype, Object.prototype --> 두개를 가지고 생성자가 만들어짐??