3. 네이티브

네이티브

Javasciprt 내 내장함수!! FP에서 함수도 객체다! 따라서 new같은 인스턴스 생성키워드가 붙지 않음. 붙는것과 차이가 또 있다.!

네이티브 종류

  • String()

    • 가장기본

  • Number()

    • 숫자

  • Boolean()

    • t/f

  • Array()

    • 배열

  • Object()

    • 일반적인 객체

  • Function()

    • 함수

  • RegExp()

    • 정규식

  • Date()

    • 날짜

  • Error()

    • 에러타입

  • Symbol()

    • ?

주요 개념 및 내용

각 네이트브들은 리터럴 값을 박싱하여 제공 해준다. 리터럴과 네이티브의 차이점이 중요

  • 박싱 & 언박싱

    new String("abc") -> 문자열 abc를 String 이란 내장함수를 통해 박싱 new String("abc").valueOf() -> 박싱된 String 내장함수를 valueOf()메서드로 언박싱

  • 네이티브 -> 생성자

    네이티브란 자스에서 제공하는 내장함수인데. new 키워드를 통해 함수도 인스턴스화가 가능. 여기에서 constructer가 관여하게 되는데 아마 프로토타입부분에서 나오지 않을까 한다.

주의 사항

  • 배열에 생성자 1개는 크기 지정 / 2개이상부터 값

      var a = new Array(3);       // 크기 3을 지정
      a.length; // 3
      var a = new Array(1,2,3,4);   // [1,2,3,4]

그외 빠트린 부분 정리

  • Object.prototype.toString.call(값)

    내부 [[Class]] 확인

       // 타입을 알 수 있음
      console.log(Object.prototype.toString.call("aasd"));        // [object String]
      console.log(Object.prototype.toString.call(1234));          // [object Number]
      console.log(Object.prototype.toString.call(true));          // [object Boolean]
      console.log(Object.prototype.toString.call(/.*abc.*/i));    // [object RegExp]
      console.log(Object.prototype.toString.call(function () {}));// [object Function]
      console.log(Object.prototype.toString.call({}));            // [object Object]
      console.log(Object.prototype.toString.call([]));            // [object Array]
      console.log(Object.prototype.toString.call(new Date()));    // [object Date]
      console.log(Object.prototype.toString.call(null));          // [object Null]
      console.log(Object.prototype.toString.call(undefined));     // [object Undefined]

테스트 코드

(function () {
    var a = new String("abc");  // String 함수 실행 -> 함수도 객체
    console.log(a); // [String: 'abc']
    console.log(a.toString());  // abc
    console.log(typeof a);  // object

    // String()은 Object 하위 클래스 같은 개념
    console.log(a instanceof String);   // true
    console.log(a instanceof Object);   // true

    console.log(Object.prototype.toString.call(a));
    console.log("============");

    var b = String("abc");

    console.log(b);         // abc
    console.log(b.toString());  // abc
    console.log(typeof b);      // string
    console.log(Object.prototype.toString.call(b));

    console.log(Object.prototype.toString.call("aasd"));        // [object String]
    console.log(Object.prototype.toString.call(1234));          // [object Number]
    console.log(Object.prototype.toString.call(true));          // [object Boolean]
    console.log(Object.prototype.toString.call(/.*abc.*/i));    // [object RegExp]
    console.log(Object.prototype.toString.call(function () {}));// [object Function]
    console.log(Object.prototype.toString.call({}));            // [object Object]
    console.log(Object.prototype.toString.call([]));            // [object Array]
    console.log(Object.prototype.toString.call(new Date()));    // [object Date]
    console.log(Object.prototype.toString.call(null));          // [object Null]
    console.log(Object.prototype.toString.call(undefined));     // [object Undefined]


    var a = new Array(3);       // 크기 3을 지정
    console.log(a.length);
    console.log(a);
    var a = Array(3);       // 크기 3을 지정
    console.log(a.length);
    console.log(a);

})();

Last updated