객체 기반의 언어
- 거의 모든 것이 객체
- 기본 데이터 타입인 boolean, number, string과 null, undefined를 제외한 나머지는 모두 객체
- 객체 기반의 언어이지만 상속과 클래스라는 개념이 없음
- 함수도 객체로 간주함. 일반적인 객체보다 더 많은 기능을 가진 객체
- 모든 객체는 프로토타입을 가짐
인터프리터 언어
- 클라이언트의 웹 브라우저에 의해 해석되고 실행됨
- 컴파일 과정이 없어 시간이 단축되지만, 언어가 그대로 노출됨
Javascript의 함수는 일급 객체 (First Class Object)이다.
- 일급 객체의 조건
- 변수나 데이터 구조안에 담을 수 있다.
- 파라미터로 전달 할 수 있다.
- 반환 값(return value)으로 사용할 수 있다.
- 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
- 동적으로 프로퍼티 할당이 가능하다.
- 변수나 데이터 구조안에 담을 수 있다.
- 파라미터로 전달 할 수 있다.
- 반환 값(return value)으로 사용할 수 있다.
- 할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.
- 동적으로 프로퍼티 할당이 가능하다.
장점
- 배우기가 쉬운편이다.
- 인터프리터 언어로 컴파일 과정이 없어 빠르게 실행된다.
- 일급 객체 언어로 함수를 이용해 다양한 방법으로 개발할 수 있다.
- 브라우저내에 엔진이 내장되어 있어, 플랫폼에 구애받지 않고 개발할 수 있다.
단점
- 소스 노출의 위험이 크다.
- 브라우저 상에서 사용자가 임의로 소스를 변경하여 실행할 수 있는 위험성이 있다.
- 서버단과의 적절한 분배가 필요하다.