>웹 프론트엔드 >JS 튜토리얼 >JavaScript 래퍼 개체_javascript 기술 사용에 대한 자세한 설명

JavaScript 래퍼 개체_javascript 기술 사용에 대한 자세한 설명

WBOY
WBOY원래의
2016-05-16 15:50:531126검색

JavaScript 개체는 복합 값입니다. 즉, 속성과 명명된 값의 모음입니다. 속성 값은 "." 기호를 통해 참조됩니다. 속성 값이 함수인 경우 이를 메서드라고 합니다.

①자주 사용하지만 실제 기본 원리를 이해하지 못할 수 있는 코드:

var s = "hello world!";
var word = s.substring(s.indexOf(" ")+1,s.length);
 

앞서 언급했듯이 여기서 변수 s는 단지 기본 유형의 문자열일 뿐입니다. 어떻게 속성(s.length)과 메서드(s.indexOf(), s.substring())를 가질 수 있나요? 네, 이번에 소개해드릴 패키징 오브제와 관련이 있습니다. 그 이유는 문자열 s의 속성이 참조되는 한 JavaScript는 새 String(s)을 호출하여 문자열 값을 객체로 변환하고 이를 처리하는 데 사용되기 때문입니다. 재산에. 속성 참조가 끝나면 새로 생성된 객체는 삭제됩니다.

문자열과 마찬가지로 숫자와 부울 값에도 고유한 메서드가 있습니다. 즉, Number() 및 Boolean() 생성자를 통해 임시 개체를 만듭니다. 문자열, 숫자 또는 부울 속성에 액세스할 때 생성되는 임시 개체는 래퍼 개체입니다. 5개의 기본 유형 중 나머지 2개(null 및 undefed)에는 ​​래핑 객체가 없습니다. 해당 속성에 액세스하면 Uncaught TypeError가 발생합니다. 위 코드를 이해하신 후, 다음 코드를 살펴보세요.

var s = "test";
s.len = 4;//给它设置一个属性
var t = s.len;

여기서 진지하지 않은 학생들은 최종 t가 4와 같다고 생각할 것입니다. 결국 4가 아닌가? 예, 끝의 t 값은 정의되지 않았습니다. 이유를 알고 싶다면 계속해서 분석을 읽어보세요. 여기 코드의 두 번째 줄은 임시 문자열 개체를 생성하고 len 속성에 값 4를 할당한 다음 개체를 삭제하는 것으로 나타났습니다. 세 번째 줄은 원래 문자열 s를 통해 새 문자열 객체를 생성하고(이것은 코드의 두 번째 줄에서 생성된 객체가 아니며 코드의 두 번째 줄에서 생성된 객체는 삭제되었습니다) len 속성, 이 속성을 읽으려고 시도합니다. 당연히 존재하지 않으므로 표현식의 결과는 정의되지 않습니다. 이 코드는 문자열, 숫자 및 부울 값을 읽는 속성 값 또는 메서드(실제로는 해당 속성 값 또는 래핑된 개체의 메서드)가 개체처럼 동작한다는 것을 보여줍니다. 그러나 속성에 값을 할당하려고 하면 이 작업이 무시됩니다. 수정은 임시 개체에서만 발생하고 임시 개체는 유지되지 않습니다.

참고: String(), Number() 및 Boolean() 생성자를 통해 명시적으로 래퍼 객체를 생성할 수 있습니다.

var s = "test",n=1,b=true;//一个字符串、数字和布尔值
var S = new String(s);//一个字符串对象
var N = new Number(n);//一个数值对象
var B = new Boolean(b);//一个布尔对象

JavaScript는 필요한 경우 래핑된 객체를 기본 값으로 변환하므로 위 코드의 객체 S, N 및 B는 항상 그런 것은 아니지만 종종 s, n 및 값 값과 동일하게 동작합니다. 비. "==" 항등 연산자는 원래 값과 해당 래핑된 개체를 동일하게 처리하지만 "===" 항등 연산자는 이를 동일하지 않은 값으로 처리합니다. typeof 연산자를 통해 원래 값과 래핑된 객체의 차이를 확인할 수도 있습니다.

    ①typeof(s);  ->"string"
     typeof(S);  ->"object"
    ②typeof(n);  ->"string"
     typeof(N);  ->"object"
    ③typeof(b);  ->"string"
     typeof(B);  ->"object"

위 내용은 이 글의 전체 내용입니다. 모두 마음에 드셨으면 좋겠습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.