JS (21) - 빌트인 객체

최조니·2022년 7월 14일
0

JavaScript

목록 보기
18/36

21.1 자바스크립트 객체의 분류

자바스크립트 객체는 크게 3개의 객체로 분류할 수 있다.

  • 표준 빌트인 객체
  • 호스트 객체
  • 사용자 정의 객체

21.2 표준 빌트인 객체

  • 자바스크립트는 Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Set, WeakMap/WeakSet, Function, Promise, Reflect, Proxy, JSON, Error 등 40여 개의 표준 빌트인 객체를 제공

  • Math, Reflect, JSON을 제외한 표준 빌트인 객체는 모두 인스턴스를 생성할 수 있는 생성자 함수 객체

  • 생성자 함수인 표준 빌트인 객체가 생성한 인스턴스의 프로토타입은 표준 빌트인 객체의 prototype 프로퍼티에 바인딩된 객체

Ex.
표준 빌트인 객체 String을 생성자 함수로서 호출하여 생성한 String 인스턴스의 프로토타입은 String.prototype

const strObj = new String('Lee');
console.log(Object.getPrototypeOf(strObj) === String.prototype);	// true

21.3 원시값과 래퍼 객체

표준 빌트인 생성자 함수가 존재하는 이유는 ❓

const str = 'hello';

console.log(str.length);			// 5
console.log(str.toUpperCase());		// HELLO
  • 원시값인 문자열, 숫자, 불리언 값의 경우, 이들 원시값에 대해 마치 객체처럼 마침표 표기법으로 접근하면 자바스크립트 엔진이 일시적으로 원시값을 연관된 객체로 변환함

  • 문자열, 숫자, 불리언 값에 대해 객체처럼 접근하면 생성되는 임시 객체를 래퍼 객체라고 한다

  • 문자열에 대해 마침표 표기법으로 접근하면 그 순간 래퍼 객체인 String 생성자 함수의 인스턴스가 생성되고 문자열은 래퍼 객체의 [[StringData]] 내부 슬롯에 할당

  • 이때 문자열 래퍼 객체인 String 생성자 함수의 인스턴스는 String.prototype의 메서드를 상속받아 사용할 수 있음


21.4 전역 객체

1) 빌트인 전역 프로퍼티

  • Infinity
    : Infinity 프로퍼티는 무한대를 나타내는 숫자 값 Infinity
console.log(window.Infinity === Infinity);		// true

console.log(3/0);				// Infinity
console.log(-3/0);				// -Infinity
console.log(typeof Infinity);	// number
  • NaN
    : NaN 프로퍼티는 숫자가 아님 (Not-a-Number)을 나타내는 숫자값 NaN
console.log(window.NaN);			// NaN

console.log(Number('xzy'));			// NaN
console.log(1 * 'string');			// NaN
console.log(typeof NaN);			// number
  • undefined
    : undefined 프로퍼티는 원시 타입 undefined
console.log(window.undefined);		// undefined

var foo;
console.log(foo);					// undefined
console.log(typeof undefined);		// undefined

2) 빌트인 전역 함수

  • eval
    • eval 함수는 자바스크립트 코드를 나타내는 문자열을 인수로 전달받는다.

  • isFinite
    • 전달받은 인수가 정상적인 유한수인지 검사하여 유한수이면 true를 반환, 무한수이면 false를 반환

  • isNaN
    • 전달받은 인수가 NaN인지 검사하여 그 결과를 불리언 타입으로 반환
    • 전달받은 인수 타입이 숫자가 아닌 경우, 숫자로 타입을 변환한 후 검사 수행

  • parseFloat
    • 전달받은 문자열 인수를 부동 소수점 숫자(실수)로 해석하여 반환

  • parseInt
    • 전달받은 문자열 인수를 정수로 해석하여 반환

  • encodeURI / decodeURI
    • encodeURI 함수는 완전한 URI를 문자열로 전달받아 이스케이프 처리를 위해 인코딩
    • decodeURI 함수는 인코딩된 URI를 인수로 전달받아 이스케이프 처리 이전으로 디코딩

  • encodeURIComponent / decodeURIComponent
    • encodeURIComponent 함수는 URI 구성 요소를 인수로 전달받아 인코딩
    • decodeURIComponent 함수는 매개변수로 전달된 URI 구성 요소를 디코딩

3) 암묵적 전역

var x = 10;

function foo () {
  y = 20;
}
foo();

console.log(x + y);		// 30
console.log(x);
console.log(y);

var x = 10;

function foo () {
  y = 20;
}
foo();

console.log(x + y);
var x = 10;

function foo () {
  y = 20;
  console.log(x + y);		// window.y = 20;
}
foo();

console.log(window.x);		// 10
console.log(window.y);		// 20

delete x;					// 전역 변수는 삭제 X
delete y;					// 프로퍼티는 삭제

console.log(window.x);		// 10
console.log(window.y);		// undefined 
profile
Hello zoni-World ! (◍ᐡ₃ᐡ◍)

0개의 댓글