> 웹 프론트엔드 > JS 튜토리얼 > 흥미롭고 이상한 javascript array_javascript 기술

흥미롭고 이상한 javascript array_javascript 기술

WBOY
풀어 주다: 2016-05-16 18:54:42
원래의
847명이 탐색했습니다.

몇 년 전 타오바오 왕푸에서 회원카드 스크립트를 다시 작성하던 중 우연히 흥미로운 사실을 발견했습니다. 코드는 유사합니다.

코드 복사 코드는 다음과 같습니다.

var associative_array = new Array();
associative_array["one"] = "1";
associative_array["two"] = "2";
associative_array["3"] = "3";
if (associative_array.length > ; 0)
{ // to do}

associative_array.length가 항상 0이라는 것을 알게 될 것입니다. 이는 나중에 약간 혼란스러웠습니다. 이것은 모든 사람들이 IE가 CSS 속성인 display:inline -block을 지원한다고 생각하는 것과 똑같다는 것을 깨달았습니다. 이는 순전히 우연이자 오해입니다.

사실( 《유해한 것으로 간주되는 JavaScript “연관 배열”에서 인용):

자바스크립트 배열(숫자형)은 키/값 쌍을 유지하는 데 사용되는 경우가 많습니다. 대신 개체를 사용해야 합니다.

//일반 아이디어: 배열은 숫자만 지원하며 키-값 대응은 객체에 사용됩니다.

배열 생성자에서 문자열 키를 지정할 수 있는 방법이 없습니다. //문자열 키 값은 배열 생성자에서 정의할 수 없습니다.
배열에서 문자열 키를 지정할 수 있는 방법이 없습니다. literal . //문자열 키는 배열 리터럴에 정의될 수 없습니다.
Array.length는 이를 항목으로 계산하지 않습니다. // Array.length는 문자열 키를 계산하지 않습니다.
배열 자세히 살펴보기:

1. 할당된 값에 따라 배열의 크기를 자동으로 조정할 수 있습니다
코드 복사 코드는 다음과 같습니다

var ar = [];
ar[2] = 1;
alert(ar.length)

이 배열의 길이는 3입니다. , 초기화된 것과 같습니다. 배열과 동일합니다. 할당이 없는 모든 배열 객체는 정의되지 않은 것으로 정의됩니다.

더 읽어보기:

2. "The Miller Device" 방법을 사용하여 배열인지 확인할 수 있습니다.

코드 복사 코드는 다음과 같습니다.

function isArray(o) { return Object.prototype.toString.call(o) === '[object Array]';}

" "The Miller Device"의 놀라운 사용은 배열을 결정하는 것뿐만 아니라:
코드 복사 코드는 다음과 같습니다.

var is = {
types : ["Array","RegExp","Date","Number","String","Object"]
};

for(var i= 0,c;c=is.types[i ];){
is[c] = (function(type){
반환 함수 (obj){
return Object.prototype.toString.call( obj) == "[object " type "]"
}
})(c)
}

더 읽어보기:

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿