열거 형은 OOP와 관련이 없으며 JavaScript에는 열거 형이 없습니다. 대신, 고정 된 값 세트 사이에서 선택이있을 때마다 열거 형이 사용됩니다. 예를 들어, 부울은로 구현 될 수있는 true와 false 사이의 선택 enum Bool { False, True }
입니다. GUI 라이브러리에는 다음과 같은 정렬을위한 열거 형이있을 수 있습니다 enum HAlignment { LEFT = -1, CENTER = 0, RIGHT = 1 }
.
일반적으로 열거 형이 구현되는 방식과 관련이 없으며 중요한 부분은 가능한 각 값이 고유하다는 것입니다. 많은 언어는 열거 형에 정수를 사용하지만 Java와 같은 일부는 임의의 객체를 지원합니다.
지금까지 우리는 상수를 사용할 수있었습니다 const int LEFT = -1, CENTER = 0, RIGHT = 1
. 그러나 컴파일러는 열거 형 값이 함께 속해 있음을 알고 있습니다. 따라서 열거 형 값을 전환 switch(value) {case LEFT: ...; case RIGHT: ...;}
하면 컴파일러는이 CENTER
경우를 잊어 버렸다고 경고 할 수 있습니다 . 시간을 크게 절약 할 수 있습니다. 열거 형이나 스위치 케이스 구문이없는 언어에서는 방문자 패턴을 사용하여이를 시뮬레이션 할 수 있지만 정적 유형이있는 경우 더 유용합니다.
다른 장점은 열거 형을 별도의 유형으로 취급 할 수 있다는 것입니다. 예를 들어 메소드가 HAlignment
정수가 아닌 매개 변수를 사용 한다고 선언 할 수 있습니다 . 그러면 세 가지 가능한 HAlignment 값 중 하나만 제공하면 코드가 컴파일되지 않습니다. 그러나 C의 열거 형은 잘 캡슐화되지 않으며 열거 형 상수는 정수와 상호 교환 적으로 사용될 수 있습니다. 다른 언어는 더 엄격합니다.
JavaScript에서는 이러한 이점이 없습니다. 주어진 예제는 열거 형으로 취급되는 객체를 선언합니다. 이것은 프로그래머에게 몇 가지 장점이 있습니다. 예를 들어 문서화가 더 쉬워지고 모든 "상수"를 단일 객체로 그룹화합니다. 그러나 그러한 객체가 열거 형이라는 것은 단지 관습입니다.
여기서 요점은 HTML에는 유한하고 알려진 태그 세트 만 있다는 것입니다. HTML5 사양을보고 해당 요소 이름을 열거 형으로 코드에 넣을 수 있으므로 <blink>
태그를 프로그램에 몰래 넣기가 더 어려워집니다 . 이 지식을 한곳에서 인코딩하여 코드를 특수 문자열 리터럴 (또는 더 나쁜 마술 숫자)로 흩 뜨리는 것이 좋습니다.