프리미티브 방법
const name = "aniket";
name.toUpperCase(); // ANIKET
name
는 프리미티브이지만 일종의 객체인 것처럼 메서드에 액세스할 수 있습니다. 그러나 우리는 프리미티브가 객체가 아니라는 것을 압니다.여기에 무슨 이야기가 있나요?🧐
프리미티브는 메모리에 저장된 단순한 값으로 가볍고 매우 빠릅니다. 개체는 키, 값 쌍의 모음이지만 무겁지만 매우 유용한 개체와 관련된 일부 유틸리티 속성에 액세스할 수 있습니다. javascript 사람들은 가볍고 빠르기 위해 primitive를 추가하고 싶었지만 primitives에 대한 유용한 메서드에 액세스할 수 있기를 원하는 딜레마에 직면했습니다.
그가 제시한 해결책은 다음과 같습니다.
엔진이 라인 2에 도달하자마자 프리미티브에 대한 속성 액세스를 시도하고 있지만 프리미티브 자체에는 메소드가 없다는 것을 알 수 있습니다. 이 메서드가 있는 해당 유형 래퍼 개체에 기본 값을 일시적으로 래핑하고 해당 개체는 우리가 사용할 수 있는 속성을 노출합니다. 메서드 실행이 완료되자마자 새 메모리 공간에서 작업 결과를 반환합니다. 이 래퍼 객체를 삭제합니다.
생성자 기능
생성자 함수
String, Number, Boolean
는 내부 전용입니다. Java와 같은 언어를 사용하면 JavaScript에서도 가능한 래퍼 개체를 명시적으로 만들 수 있지만 권장되지 않으며 내부용으로만 사용됩니다. 우리가 그것들을 사용하면 많은 것들이 미쳐버릴 수 있습니다.// Insane Use 🙅♂️ Not recommended
const age = new Number(22);
typeof age; // "object" 😱
// Sane Use 😍
const age = Number("22");
// explicit type conversion
질문으로 요약하기
strict
및 non-strict 모드의 콘솔 출력에 대해 설명해주세요.const name = "Aniket";
name.last = "Jha";
console.log(name.last);
2행의
strict
모드에서 엔진은 우리가 일시적으로 내부적으로 생성된 내부 래퍼 개체에 속성을 생성하려는 것으로 보고 오류가 발생합니다. 엄격하지 않은 모드의 경우 라인 2의 엔진은 일시적으로 생성된 래퍼 개체에 속성을 만들 수 있지만 이 개체는 라인 2가 실행되는 즉시 메모리에서 제거됩니다. 3행에서 새 래퍼 객체가 일시적으로 생성되지만 이전과 다르기 때문에 last
속성이 없으므로 undefined
가 출력됩니다.결론
프리미티브는 실제로 간단한 값이지만 엔진은 프리미티브를 래퍼 객체로 래핑하고 유용한 메서드와 속성을 노출하여 속성 액세스가 있는 경우 특히 프리미티브를 처리합니다.
Reference
이 문제에 관하여(프리미티브 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/vtechguys/methods-of-primitive-1ocd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)