티스토리 뷰
01. 클래스 생성자는 new와 함께 호출하지 않으면 에러가 발생한다.
// class 생성
class ClassName{
constructor(){}
}
// 생성자 함수 생성
function ConsName(){}
// 호출
ClassName(); // VM20:1 Uncaught TypeError: Class constructor ClassName cannot be invoked without 'new' at <anonymous>:1:1
ConsName();
02. 클래스 메서드는 열거할 수 없다.
클래스의 prototype 프로퍼티에 추가된 메서드 전체의 enumerable 플래그는 false이다.
- enumerable플래그는 for...in으로 객체 순환을 할 때, key의 값의 반환 유무를 뜻한다.
- for...in으로 객체 순환을 할 때, prototype 프로퍼티에 저장된 함수 값을 반환하는 것에서 차이가 발생한다.
- 생성자 함수 => 함수 반환O
- class => 함수 반환 X
[예제]
function ConsName(name, age){
this.name = name;
this.age = age;
}
ConsName.prototype.fun = function(){}
class ClassName{
constructor(name, age){
this.name = name;
this.age = age;
}
fun(){}
}
let objCons = new ConsName('mill', 30); //
let objClass = new ClassName('밀', 30);
for(let key in objCons){
console.log(key)
}
for(let key in objClass){
console.log(key)
}
03. 클래스는 항상 엄격 모드로 실행된다.
[공부 좌표]
[참고]
객체 순환 fon...in / 배열 순환 for...of
데이터 프로퍼티(data property) 플래그 - writable, enumerable, configurable
'이론 > JS' 카테고리의 다른 글
[JS] this, event.currentTarget, event.target의 차이 (0) | 2021.02.18 |
---|---|
[JS] 버블링, 캡처링 (0) | 2021.02.18 |
[JS] class 선언문 - 이론 (0) | 2021.02.12 |
[JS] class - 강의 (0) | 2021.02.11 |
[JS] 객체의 property name(=key) (0) | 2021.02.09 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- __proto__
- prototype 프로퍼티
- scrollTop
- 점 표기법
- [[Prototype]]
- @font-face
- 동치 연산자
- 대괄포 표기법
- javascript class
- 객체의 프로퍼티
- outerHeight
- clientHeight
- 일치 연산자
- clinetTop
- 부등 연산자
- 불일치 연산자
- scrollHeight
- offsetHeight
- innerHeight
- constructor
- 링크막기 #a링크막기
- offsetTop
- property
- 프로퍼티
- 동등 연산자
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함