모던자바스크립트 21장 빌트인 객체

연호·2022년 12월 28일
0

모던자바스크립트

목록 보기
16/28

빌트인 객체

  1. 표준 빌트인 객체란 ECMAScript 사양에 정의된 객체를 말한다. 자바스크립트 실행 환경과 관계없이 언제나 사용할 수 있다. Object, String, Number, Date, Math 등 40여개를 제공한다. Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체다.
const strObj = new String('Lee'); // String {"Lee"}
console.log(typeof strObj); // object

const numObj = new Number(123); // Number {123}
console.log(typeof numObj); // object

// 표준 빌트인 객체가 생성한 인스턴스의 프로토타입은 표준 빌트인 객체의 prototype 프로퍼티에 바인딩된 객체다.
console.log(Object.getPrototypeOf(strobj) === String.prototype); // true

// toFixed 같은 프로토타입 메서드를 사용할 수 있다.
const numberObj = new Number(1.5); // Number {1.5}
console.log(numberObj.toFixed()); // 2
  1. 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 임시 객체인 래퍼 객체를 생성한다. 래퍼 객체의 처리가 종료되면 원시 값을 갖도록 되돌리고 래퍼 객체는 가비지 컬렉션의 대상이 된다.
const str = 'hello';

// 원시 타입인 문자열이 프로퍼티와 메서드를 갖고 있는 객체처럼 동작한다.
console.log(str.length); // 5
console.log(str.toUpperCase); // HELLO
  1. 전영 객체는 코드가 실행되기 이전 단계에 자바스크립트 엔진에 의해 어떤 객체보다도 먼저 생성되는 특수한 객체이며, 어떤 객체에도 속하지 않은 최상위 객체다. 브라우저 환경에서는 window가 전역 객체를 가리킨다. 전역 객체는 모든 표준 빌트인 객체를 프로퍼티로 가지고 있다. var 키워드로 선언한 전역 변수와 선언하지 않은 변수에 값을 할당한 암묵적 전역, 그리고 전역 함수는 전역 객체의 프로퍼티가 된다.
bar = 2; // window.bar
console.log(window.bar); //2
  1. 빌트인 전역 함수 eval는 자바스크립트 코드를 나타내는 인수를 문자열로 받고 문자열 코드가 표현식이라면 런타임에 평가하여 값을 생성하고, 전달받은 인수가 표현식이 아닌 문이라면 문자열 코드를 런타임에 실행한다. eval 함수의 사용은 금지해야 한다.

  2. isFinite 함수는 인수가 유한수라면 true를, 무한수이면 false를 반환한다. 숫자가 아닌 경우 숫자로 타입 변환 후 검사를 수행한다. 이때 인수가 NaN으로 평가되는 값이라면 false를 반환한다.

isFinite(0); // true
isFinite(2e64); // true
isFinite('10'); // true

isFinite(Infinity); // false
  1. isNaN은 전달받은 인수가 NaN인지 검사하여 그 결과를 불리언 타입으로 반환한다.

  2. parseFloat은 전달받은 문자열 인수를 부동 소수점 숫자, 실수로 해석하여 반환한다.

  3. parseInt는 전달받은 문자열 인수를 정수로 해석하여 반환한다.

  4. encodeURI 함수는 완전한 URI 를 문자열로 전달받아 이스케이프 처리를 위해 인코딩한다. 이스케이프 처리는 네트워크를 통해 정보를 공유할 때 어떤 시스템에서도 읽을 수 있는 아스키 문자 셋으로 변환하는 것이다. decodeURI 함수는 인코딩된 URI를 인수로 전달받아 이스케이프 처리 이전으로 디코딩한다.

  5. 암묵적 전역은 선언하지 않은 식별자를 window.변수 형태로 해석하여 전역 객체에 프로퍼티를 동적으로 생성하는 현상을 말한다. 이렇게 생성된 변수는 변수가 아니라 프로퍼티이기 때문에 delete 연산자로 삭제할 수 있다.

var x = 10;
function foo () {
  y = 20; // window.y = 20;
}
foo();

// 선언하지 않은 식별자 y를 전역에서 참조할 수 있다.
console.log(x + y); // 30
profile
뉴비

0개의 댓글