객체를 생성하는 방법
- 객체 리터럴을 사용하여 객체를 생성 : let obj={ ... }
- function을 사용하여 객체를 생성 : function ABC { ... }
- (자바의 static과 같은 개념) prototype을 사용하여 객체를 생성 (메소드를 생성) ⇒ 객체 생성할때마다 메소드도 새로 생성되는 것이 아니라 prototype으로 공유하는 것
- class를 사용하여 객체를 생성 (자바의 class와 유사함. ECMAScript 6 이상)
리터럴 사용하여 객체 생성하기
기본형 리터럴 객체
- 리터럴로 만든 obj1은 재사용할 수 없다. 일회성이 아니면 잘 사용하지 않는다.
기본형 + 메소드가 있는 리터럴 객체
리터럴 객체를 map으로 생성 (리터럴 안에 key와 value값이 있다)
function을 이용한 객체생성
⇒ 가장 많이 쓰는 타입
- Setter역할을 하는 function, Getter역할을 하는 function, toString 역할 function
- 나중에 Student를 100개 만들면 안에 있는 function도 100개 만들어짐
- 추후 공통적으로 쓸 setter, getter, toString은 프로토타입으로 쓸 수 있음
- 객체를 new로 만들어 쓸 수 있다. (literal은 new 안 됨)
- new로 인스턴스 생성 후
- setter로 필드값 설정
- toString으로 출력
JSON타입으로도 만들어보기
- 주의 : java에 넘길때는 키값, value값 큰따옴표로!!
- { "id" : "aaa", "name" : "gil"}
HTML 태그 씌워서 넘길때 쓰는 function
- 웹브라우저 안에 다음과 같이 나온다고 예상하면 됨.
다른 인스턴스 s2 생성
만든 인스턴스를 배열에 담아보기
- toString, toHTML 도 마찬가지로 모든 객체가 찍힐것임
프로토타입을 사용한 메소드 선언
✔ 객체를 생성할때마다 속성은 다른 값을 갖지만 메소드는 모두 같은 값을 가지고 있을 때, 공통으로 사용할 메소드만 따로 빼서 프로토타입 공간에 넣으면 객체 생성할때마다 메소드도 같이 생성하지 않아도 됨. (메모리 효율성)
- 필드는 다음과 같이 객체 내에 선언하고, 공유 메소드는 prototype에 따로 담는다.
- JSON타입은 콘솔에 찍을때는 함수명만 넣어도 괜찮지만, div에 출력할때에는 JSON().code 이런 식으로 하나씩 하나씩 출력해야함
클래스를 사용한 객체 생성
- 자바스크립트에서의 생성자 : constructor (캡쳐화면에 대문자 오타! 소문자입니다)
- 클래스에 값 집어넣고 array 배열에 집어넣기
- 다양한 방법 쓸 수 있음
- for-of 이용해서 콘솔에 출력
'Web 기초' 카테고리의 다른 글
[Web] 웹 기초 (18) - JavaScript #11 배열 (Array), 정렬 (sort) (0) | 2022.06.15 |
---|---|
[Web] 웹 기초 (17) - JavaScript #10 String 객체 (length, charAt, indexOf, replace, split, substring) (0) | 2022.06.15 |
[Web] 웹 기초 (15) - JavaScript #8 JSON (0) | 2022.06.13 |
[Web] 웹 기초 (14) - JavaScript #7 함수 (function) (0) | 2022.05.31 |
[Web] 웹 기초 (13) - JavaScript #6 switch, for in / for of (0) | 2022.05.30 |