소개
우리는 JavaScript 데이터 유형이 기본 유형 (또는 기본 유형)과 참조 유형의 두 가지 범주로 나뉘어져 있음을 알고 있습니다.
기본 유형의 값은 스택 메모리에 저장된 데이터의 간단한 세그먼트이며 값에 따라 액세스합니다. JS에는 정의되지 않은, 널, 부울, 숫자 및 문자열의 5 가지 기본 유형이 있습니다.
참조 유형 값은 힙 메모리에 저장된 객체이며 그 값은 참조로 액세스합니다. 참조 유형은 주로 객체, 배열, 기능, Regexp 및 날짜입니다.
객체에는 속성과 방법이 있으므로 다음 코드를 보는 것은 놀라운 일이 아닙니다.
var favs = [ 'egg', 'lotus pot']; favs.push ( 'okra'); console.log (favs); // [ "egg", "lotus pot", "okra"] console.log (favs.length); // 3
배열은 기준 유형이므로 여름에 아이스크림을 먹는 것과 같이 자연스럽게 속성 (길이) 및 방법 (푸시)을 가질 수 있습니다. 그러나 다음 코드를보고 신중하게 생각하십시오. 이것은 이것이 합법적입니까?
var realmessage = "나는 당신을 사랑하지만 거짓말을했다고 말했다"; var mymessage = allemessage.substring (5,15); console.log (myMessage); //"사랑해요"
"서브 스트링"메소드를 고의적으로 수행하는 가슴 아픈 소녀가 있습니다. 그러나 문자열이 기본 유형이라고 말하지 않습니까? 왜 방법을 가질 수 있습니까? ? Qingtian 마스터 다른 왕의 법이 있습니까!
실제로이 모든 것은 "기본 포장 유형"이라는 것이기 때문입니다. 이 기본 포장 유형은 특히 정직하며, "문제 후 옷을 반환하고 장점과 명성을 숨기는 것"입니다!
기본 포장 유형
JavaScript는 처음에 언급 된 객체 및 배열과 같은 참조 유형 외에도 문자열, 번호 및 부울의 세 가지 특수 참조 유형을 제공하여 해당 기본 유형을 작동시킬 수 있습니다.
클리핑 스트링의 위의 예를 계속 살펴보십시오. 하위 문자열 방법을 사용하더라도 Realmessage 자체의 값은 변하지 않을 것임을 알았습니다. 이 메소드를 호출하면 새 문자열 만 반환됩니다.
이것이 기본 포장 유형이하는 일입니다. 원래 방법은 없지만 사용하려면 방법을 사용하려면 조정할 수 있으며 해당 기본 포장 유형 에이 방법이 있습니다. 예를 들어, 위의 서브 스트링 방법은 기본 문자열 유형 이이 방법을 갖는 것이 불가능하지만 문자열의 포장 유형은이 방법을 속삭 이면서이 메소드를 실행 한 후 결과를 반환합니다. 실행시 :
이 코드 줄 (5,15)이 코드 라인을 할 때 많은 일이 일어났습니다.
먼저, 메모리에서 재생의 가치를 읽습니다. 이 읽기 모드에서 배경이 작동하기 시작합니다. JS 고도는 다음과 같이 백그라운드에서 완료된 이러한 동작을 설명합니다.
1. 문자열 유형의 인스턴스를 만듭니다.
2. 인스턴스에서 지정된 메소드를 호출하십시오.
3.이 인스턴스를 파괴하십시오
위의 예는 다음과 같은 코드로 설명 할 수 있습니다.
var _RealMessage = new String ( "내가 당신을 사랑하지만 거짓말을했지만 거짓말"); var myMessage = _realMessage.substring (5,15); _ realmessgae = null; // 메소드가 호출 된 후 파괴됩니다
따라서 이런 식으로 우리는 기본 유형 문자열이 자체 메소드를 실행하는 것이 아니라 배경이 해당 기본 래퍼 유형 문자열을 만듭니다. 기본 유형의 값에 따라 인스턴스를 인스턴스화 하여이 인스턴스가 지정된 메소드를 호출하고 최종적으로 자체를 파괴합니다.
기본 래퍼 유형의 마지막 단계의 "파괴"기능에주의를 기울여 기본 유형 값에 사용자 정의 속성과 메소드를 추가 할 수 없다고 결정합니다.
var me = "sunjing"; me.age = 18; console.log (me.age); // 정의되지 않은
나이 속성을 "나"문자열에 추가했으며 값은 18 세가 되기로 설정되었습니다. 그러나 다시 액세스했을 때이 속성은 사라졌습니다. 이것은 다음과 같습니다.
코드 속성 할당의 두 번째 줄이 수행되면 기본 래퍼 유형의 인스턴스가 백그라운드에서 생성됩니다. 이 연령 속성은 실제로 인스턴스에 매달려 있지만 즉시 즉시 인스턴스가 파괴됩니다. 세 번째 줄로 실행할 때 기본 래퍼 유형의 새로운 인스턴스가 재현되고 당연히 나이 속성이 없습니다.
기본 포장 유형을 보여줍니다
읽기 모드의 문자열 외에도 배경을 사용하면 기본 래퍼 유형 인스턴스를 작성하는 데 도움이됩니다.
var str = new String ( "hello"); var str2 = str.touppercase (); console.log (str2); // "hello :
이것은 배경이 우리가 생성하는 데 도움이 될 때 변수에 저장된 것과 다릅니다.
var str1 = new String ( "hello"); var str2 = "hello"; typeof str1 // "객체"typeof str2 // "String"
요약
기본 포장 유형 덕분에 세 가지 기본 유형의 문자열, 부울 및 숫자를 작동하는 것이 더 편리합니다. 이 세 가지 기본 유형 값을 읽을 때마다 배경은 해당 래퍼 유형 인스턴스를 생성합니다. 이 인스턴스는 지정된 방법을 호출하며 호출 후 파괴됩니다. 이 짧은 수명주기는 원시 유형에 사용자 정의 속성과 방법을 추가 할 수 없다고 결정합니다.
위의 기사는 왜 문자열을 JavaScript로 소유 할 수 있는지에 대한 깊은 이해를 가지고 있습니다. 이것은 내가 당신과 공유하는 모든 콘텐츠입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.