⇨ 래퍼객체는 원시 타입을 감싸는 형태의 객체이다. 래퍼 객체는 프로퍼티를 참조할 때 임시생성되며
프로퍼티 참조가 끝나면 사라진다.
// 래퍼 객체
//원시값을 필요에 따라서 관련된 내장 객체로 변환
const number = 12; //number 숫자 원시타입
//number원시타입을 감싸고 있는 Number 객체로 감싸짐
console.log(number.toString());
console.log(number); // number 원시타입
const text = '한글'; //string 문자 원시타입
console.log(text);
console.log(text.length); //String 객체
//프로퍼티 참조 생성 → 프로퍼티 참조끝나면 사라짐
let happy = 'smile';
happy.len = 5;
console.log(happy.len); //undefined
⇊⇊ 원시타입과 래퍼객체의 차이점 ⇊⇊
let string = 'text'; //type: string
let object1 = new string('text'); //type: object
let object2 = new string('text'); //type: object
string == object1; //false
object1 == object2; //false
⇒ String 객체는 진짜 객체이기 때문에 원시타입의 문자열과 String 객체는 동일 하지 않습니다.
또한 String객체는 개별 객체이기때문에 자기자신에게만 동일합니다.
⇨ 모든 객체의 유일한 최상위 객체를 의미한다. 전역 객체의 이름은 사용하는 환경에 따라 달라진다.
일반적으로 Browser-side에서는 window
, Server-side(Node.js)에서는 global
객체를 의미한다.
⇒ 애플리케이션 전역에서 사용하는 값들을 나타내기 위해 사용한다.
globalThis
: this 값을 가진 전역 객체를 반환Infinity
: 양/음의 무한대NaN
: 숫자가 아님을 나타냄undefined
: 원시 타입 undefined를 값⇒ 애플리케이션 전역에서 호출할 수 있는 함수로서 전역 객체의 메소드이다.
eval(string)
⇒ 매개변수에 전달된 문자열 구문 또는 표현식을 값으로 평가 또는 실행한다.
*string : code 또는 표현식으로 나타내는 문자열
isFinite(value)
⇒ 매개변수에 전달된 값이 정상적인 유한수인지 검사하여 그 결과를 Boolean으로 반환한다.
값이 숫자가 아닌경우, 순자로 변환한 후 검사를 수행한다.
console.log(isFinite(Infinity)); // false
console.log(isFinite(10)); // true
console.log(isFinite('10')); // true: '10' → 10
console.log(isFinite(null)); // true: null → 0
isNaN(value)
⇒ 매개변수에 전달된 값이 NaN인지 검사하여 그 결과를 Boolean으로 반환한다.
값이 숫자가 아닌경우, 순자로 변환한 후 검사를 수행한다.
isNaN(NaN) // true
isNaN(undefined) // true: undefined → NaN
isNaN('text') //true
isNaN(true) // false: true → 1
isNaN(null) // false: null → 0
isNaN(22) // false
isNaN('22') // false: '22' → 22
parseFloat(string)
⇒ 매개변수에 전달된 문자열을 부동소수점 숫자(floating point number)로 변환하여 반환한다.
문자열의 첫 숫자만 반환되며 전후 공백은 무시된다. 그리고 첫문자를 숫자로 변환할 수 없다면 NaN을 반환한다.
parseFloat('1.23'); // 1.23
parseFloat('12.34'); // 12
parseFloat('12 34 56'); // 12
parseFloat(' 24 '); // 24
parseFloat('22 years'); // 22
parseFloat('D Day 29') // NaN
parseInt(string, radix);
string: 파싱 대상 문자열
radix: 진법을 나타내는 기수(2 ~ 36, 기본값 10))
⇒ 매개변수에 전달된 문자열을 정수형 숫자(Integer)로 반환한다. 반환값은 언제나 10진수이다.
첫번째 매개변수에 전달된 값이 문자열이 아니면 문자열로 변환한 후 숫자로 해석하여 반환한다.
문자열의 첫 숫자만 반환되며 전후 공백은 무시된다. 그리고 첫문자를 숫자로 변환할 수 없다면 NaN을 반환한다.
parseInt(12); // 12
parseInt(12.345); // 12
parseInt('12'); // 12
parseInt('12.345'); // 12
parseFloat(' 24 '); // 24
parseFloat('22 years'); // 22
parseFloat('D Day 29') // NaN
encodeURI(URI)
// URI: 완전한 URI
decodeURI(encodedURI)
// encodedURI: 인코딩된 완전한 URI
encodeURI
: 매개변수로 전달된 URI(Uniform Resource Identifier)를 인코딩한다.decodeURI()
: 매개변수로 전달된 URI을 디코딩한다.//encodeURI / decodeURI
const URL = 'https://해피코딩.com';
const encoded = encodeURI(URL); //인코딩: 문자들을 이스케이프처리
const decoded = decodeURI(encoded); //디코딩
console.log(encoded); //https://%ED%95%B4%ED%94%BC%EC%BD%94%EB%94%A9.com
console.log(decoded); //https://해피코딩.com
encodeURIComponent()
: 매개변수로 전달된 URI(Uniform Resource Identifier) component(구성 요소)를 인코딩한다.decodeURIComponent()
: 매개변수로 전달된 URI component(구성 요소)를 디코딩한다.const URL = 'https://해피코딩.com';
let encoded = encodeURI(URL); //인코딩: 문자들을 이스케이프처리
let decoded = decodeURI(encoded); //디코딩
console.log(encoded); //https://%ED%95%B4%ED%94%BC%EC%BD%94%EB%94%A9.com
console.log(decoded); //https://해피코딩.com
// encodeURIComponent / decodeURIComponent
encoded = encodeURIComponent(URL);
decoded = decodeURIComponent(encoded);
console.log(encoded); //https%3A%2F%2F%ED%95%B4%ED%94%BC%EC%BD%94%EB%94%A9.com
console.log(decoded); //https://해피코딩.com
⇒ encodeURIComponent()는 인수를 쿼리스트링의 일부라고 간주한다. 따라서 =, ?, &를 인코딩한다.
반면, encodeURI()는 인수를 URI 전체라고 간주하며 파라미터 구분자인 =, ?, &를 인코딩하지 않는다.
참고 및 출처
내장객체 - MDN
[Javascript] 래퍼 객체 (Wrapper object) - includestdio
Wrapper Object(래퍼 객체) - kim-jaemin420
전역객체 - MDN
전역객체 - poiemaweb