먼저 다음과 같은 테스트 코드를 살펴보고 어떤 문제를 찾을 수 있는지 살펴보겠습니다.
var str="likeke";
str;//"likeke"
str.length;//6
str.age=22;
str.age;//undefine;
var mystr=new String ("likeke");
mystr;//String {0: "l", 1: "i", 2: "k", 3: "e", 4: "k ", 5: "e", 길이: 6, [[PrimitiveValue]]: "likeke"}
mystr.length;//6
mystr.age=22;
mystr .age;//22
첫 번째 질문: 기본 유형 문자열이 길이 속성에 액세스할 수 있는 이유는 무엇입니까?
두 번째 질문: 문자열의 래퍼 유형은 사용자 정의 속성에 액세스할 수 있습니다. 기본 유형 문자열에 액세스할 수 없는 이유는 무엇입니까?
이유: 1. 객체 형태의 기본 유형 문자열 속성에 액세스하거나 이에 대한 새 속성을 생성하면 js 엔진이 이를 해당 패키징 유형 객체로 변환합니다.
2. 맞춤 속성을 추가하면 임시 개체가 즉시 삭제됩니다. 따라서 이 속성에 다시 액세스하면(다시 래핑 유형으로 변환됨) undefind 로 나타납니다.
문자열 외에도 다른 기본 유형에도 비슷한 원칙이 있습니다(예: (666).toString().length;//3