ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JavaScript] 05-2. 참조타입
    프로그래밍/JavaScript 2014. 5. 27. 22:44
    반응형

    < 프론트엔드 개발자를 위한 자바스크립트> (2013 인사이트, 한선용 옮김) 의 책을 요약한 내용으로 자바스크립트 제대로 배우기 스터디 그룹(페이스북) 의 글입니다.


    * 단원간 파트가 길어짐에 따라 단원을 분리하여 정리할 생각입니다.





    5.3 Date 타입


    - ECMAScript의 Date 타입은 자바 초기 버전의 java.util.Date에 기반한다.

    - Date 타입은 날짜와 시간을 저장할 때 1970년 1월 1일 자정부터 몇 밀리초가 지났는지 나타내는 숫자를 사용

    - 이런 형식을 사용하므로 Date 타입은 1970년 1월 1일 자정으로부터 285,616년 전후의 날짜를 정확히 표현할 수 있다.

    - 날짜 객체를 생성할 때는 new 연산자 다음에 Date 생성자를 사용

    - ECMAScript 5에서는 Date 객체에 now() 메서드가 추가되었다. 이 메서드는 현재 시각을 밀리초 표현을 반환한다. 이 메서드를 사용하면 코드의 실행 시간을 측정하는 프로파일링 작업을 할수 있다.


    5.3.1 상속된 메서드

    - 다른 참조 타입과 마찬가지로 Date타입 역시 toLocaleString(), toString(), vlaueOf() 메서드를 오버라이드한다.

    - toLocaleString()이나 toString()은 디버그 목적으로 사용할만하지만 브라우저 호환성 문제로 사용자에게 표시하기에는 적당하지 않다.


    5.3.2 날짜 표시 메서드

    - Date 타입에는 날짜를 특정한 형식으로 표현하는 메서드가 존재한다.

    - toDateString() - 날짜를 요일, 월, 일, 년 형식으로 표현

    - toTimeString() - 날짜를 시, 분, 초, 타임존 형식으로 표현

    - toLocaleDateString() - 날짜를 요일, 월, 일, 년, 형식으로 표현

    - toLocaleTimeString() - 날짜를 시, 분, 초, 타임존 형식으로 표현

    - toUTCString() - 날짜를 UTC(협정 세계시) 형식으로 표현


    5.3.3 날짜/시간 부속 메서드

    - Date 타입의 메서드인데 날짜의 특정 부분을 가져오거나 설정하는데 사용한다.




    5.4 RegExp 타입

    - ECMAScriptsms RegExp 타입을 통해 정규 표현식을 지원한다.


    5.4.1 정규 표현식 인스턴스 프로퍼티

    - RegExp 인스턴스에는 각 프러퍼티 패턴에 대한 정보를 포함


    5.4.2 정규 표현식 인스턴스 메서드

    - RegExp 객체에서 가장 많이 쓰이는 메서드는 그룹을 캡처할 의도로 만들어진 exec() 메서드

    - exec() 메서드는 패턴을 테스트할 문자열을 매개변수로 받고 패턴에 일치하는 문자열 배열을 반환하며 일치하는 부분을 찾을 수 없을 때는 null을 반환한다.

    - exec() 메서드가 반환하는 배열은 Array의 인스턴스인 동시에 프로퍼티 두 개가 추가된다.

    - index 프로퍼티는 패턴이 일치한 위치를 나타내며 input 프로퍼티는 exec() 메서드에 넘긴 문자열이다.

    - exec()메서드가 반환하는 배열의 첫 번째 데이터는 패턴에 일치하는 부분 전체인데 다른 데이터는 표현식에서 캡쳐한 부분이다.

    - 패턴에 캡쳐 그룹이 없다면 반환하는 배열에는 데이터가 하나만 존재한다.


    5.4.3 RegExp 생성자 프로퍼티

    - RegExp 생성자에는 몇가지 프로퍼티가 존재하는데 이들 프로퍼티는 스코프에 포함된 정규 표현식 전체에 영향을 미치며 마지막으로 실행한 정규 표현식 조작에 따라 바뀐다.

    - 프로퍼티의 또 다른 특징은 두 가지 방법으로 접근 가능하다는 점이다.


    5.4.4 패턴의 한계

    - ECMAScript의 정규 표현식은 완전히 개발된 상태이지만 펄 같은 언어에서 가능한 고급 정규 표현식 기능에는 미치지 못한다.

    - ECMAScript 정규 표현식에서 지원하지 않는 기능에 대해서는 http://www.regular-expressions.info/ 를 참고하십시오.

    - 몇가지 제한이 있지만 ECMAScript에서 지원하는 정규 표현식 기능만으로도 대부분의 작업을 충분히 처리가능하다.


    5.5 Function 타입

    - 함수는 ECMAScript에서 가장 흥미로운 부분인데 이는 함수가 사실 객체라는 점에 기인

    - 모든 함수는 Function 타입의 인스턴스이며 다른 참조 타입과 마찬가지로 프로퍼티와 메서드가 존재한다.

    - 함수 역시 객체이므로 함수 이름은 단순히 함수 객체를 포인터일 뿐이지 함수와 단단히 결합되는 것은 아니다.


    5.5.1 오버로딩 없음(다시 설명합니다)

    - 함수 이름이 단순한 포인터임을 이해하면 ECMAScript에서 함수 오버로딩이 불가능한 이유를 이해할 수 있다.


    5.5.2 함수 선언 vs 함수 표현식

    - 함수 선언과 함수 표현식이 거의 일치한다.


    5.5.3 값처럼 쓰는 함수

    - ECMAScript에서 함수 이름은 단수 변수일 뿐이므로 함수도 다른 값이 올수 있는 곳이라면 어디든 올 수 있는데 이러한 특징 덕분에 함수를 다른 함수에 매개변수로 넘기거나, 함수가 실행 결과로 다른 함수를 반환하는 일이 가능해진다.


    5.5.4 함수의 내부 구조

    - 함수 내부에는 arguments, this 라는 특별한 개체가 있다

    - arguments 객체는 배열과 비슷한 객체이며 함수에 전달된 매개변수를 모두 포함

    - arguments 객체의 주요 목적은 함수 매개변수를 포현하는것이지만 arguments 객체의 소유자인 함수를 가리키는 포인터인 callee라는 프로퍼티도 있다.


    5.5.5 함수 프로퍼티와 메서드

    - ECMAScript의 함수는 객체이며 프로퍼티와 메서드를 가진다.

    - 모든 함수에 공통인 프로퍼티는 length와 prototype이다.

    - length 프로퍼티는 함수가 넘겨받을 것으로 예상하는 이름 붙는 매개변수의 숫자이다.


    5.6 원시 래퍼 타입

    - Boolean, Number, String은 원시 값을 편리하게 조작하기 위해 디자인된 참조 타입이다.


    5.6.1 불리언 타입

    - Boolean 타입은 불리언 값에 대응하는 참조타입인데 Boolean 객체를 생성하려면 Boolean 생성자에 true나 false를 넘기면 된다.


    5.6.2 Number 타입

    - Number 타입은 숫자형 값의 참조 타입인데 Number 객체는 Number 생성자에 숫자를 넘겨 생성한다.


    5.6.3 String 타입

    - String 타입은 문자열을 나타내는 객체이며 String 생성자를 통하여 생성한다.


    5.7 내장된 싱글톤 객체

    - ECMA-262 명세에서는 내장 객체를 ECMAScript 구현에서 제공하는 객체는 호스틓 ㅘㄴ경에 무관하며 ECMAScript 프로그램이 실행되는 즉시 이미 존재한다고 정의한다.

    - 개발자가 내장 객체를 명시적으로 인스턴스화 할 필요가 없다.


    5.7.1 Global 객체

    - Global 객체는 명시적으로 접근할 수 없다는 점에서 ECMAScript에서 가장 독특한 객체다

    - ECMA-262는 Global 객체를 소유자가 없는 모든 프로퍼티와 메서드를 담는 객체로 정의한다.

    - 전역 변수나 전역 함수라는것은 존재하지 않지만 전역에서 정의하는 변수와 함수는 모두 Global 객체의 프로퍼티가 된다.


    5.7.2 Math 객체

    - ECMAScript에서는 수학 공식과 각종 상수를 Math 객체에 저장한다.

    - 필요한 계산이 Math 객체에 구현되어 있다면 자바스크립트로 해당 수식을 직접 만들기보다는 Math 객체에 구현된 것을 이용하는 편이 훨씬 빠르다.


    5.8 요약

    - 자바스크립트 객체는 참조 값이라고 불리며 다음과 같이 내장된 참조 타입을 통해 특정한 타입의 객체 생성이 가능하다.

    - ECMAScript의 참조 타입은 전통적인 객체 지향 언어의 클래스와 비슷하지만 다른점도 많다.

    - 모든 참조 타입은 Object 타입의 작동방식을 상속한다.

    - Array 타입은 데이터의 순서가 있는 목록이며 포함한 값을 조작하고 변환하는 기능을 제공한다.

    - Date 타입은 현재의 날짜와 시간을 포함해 날짜와 시간에 관한 정보를 제공하며 이를 가공하는 메서드도 가지고 있다.

    - RegExp 타입은 ECMAScript에서 지원하는 정규 표현식에 대한 인터페이스이며 정규 표현식의 기본 기능은 대부분 지원하고 고급 기능도 일부 지원한다.

    - 자바스크립트의 독특한 점은 Function 타입의 인스턴스, 즉 함수도 객체의 일종

    - 자바스크립트에는 원시 래퍼 타입이 존재하여 원시 값을 객체처럼 다룰수 있는데 Boolean, Number, String 세 가지 이다.

    - 각 래퍼 타입은 이름의 원시 타입에 대응

    - 원시 값을 읽기 모드로 접근할 때 원시 레퍼 객체의 인스턴스가 만들어지며 이를 통해 데이터를 조작

    - 래퍼 객체는 원시 값을 조작하는 문장이 실행되는 즉시 파괴

    - 내장 객체인 Global, Math 객체는 코드가 실행되는 즉시 생성

    - ECMAScript에서 Global 객체에 접근할 수 있는 방법은 없지만 웹 브라우저는 Global 객체를 window 객체로 구현한다.

    - Global 객체는 모든 전역 변수와 함수를 프로퍼티 형태로 포함

    - Math 객체에는 복잡한 수학 계산에 필요한 프로퍼티와 메서드가 포함


    요약 후기

    - 상세 메서드 내용들은 생략하였다. 다 요약하려면 책을 요약하는 것이 아니라 책을 쓰게 될것같아서; 그리고 지금 시점에서 최대한 진도를 빠르고 정확하게 빼는것이 목적이지 요약이 최우선 목표가 아니므로 내용면에서 허술한 점이 꽤나된다... 이렇게 찝찝하게 하는거 별로 안좋아하는데.. -ㅅ-

    반응형

    댓글

Designed by Tistory.