jQuery에서 makeArray는 비공개 메서드로, 주로 "배열 유사 객체"를 배열로 변환하는 데 사용됩니다.
그럼 "배열형 객체"란 무엇인가요?
예를 들어 모든 function에는 arguments 개체가 있습니다. 이 개체는 실제 매개변수 목록이며 length 속성을 가질 수도 있습니다. 첨자를 통해 액세스됩니다.
function foo(){ //1 console.log(arguments.length); //10 console.log(arguments[0]); } foo(10);
또한 HTMLCollection, NodeList 등과 같은 유형의 객체도 "배열형 객체"입니다.
두 사람의 공통점은 2
1 length 속성입니다.
2. 요소는 아래 첨자를 통해 액세스할 수 있습니다.
배열에 비해 배열과 유사한 객체에는 편리한 API가 많지 않으므로 많은 프레임워크에서 변환 방법을 제공합니다.
가장 쉬운 방법은 Array.prototype에서 slice 메서드를 사용하는 것입니다.
function makeArray(array){ return Array.prototype.slice.call(array); }
하지만 jQuery는 초기 IE와 호환되도록 자체 구현을 제공합니다.
var makeArray = function(array){ //存储元素的新数组 var ret = []; if(array != null){ var i = array.length; /* 分别对应四种非类数组对象情况: 1.没有length属性 2.为字符串 3.是函数 4.是window对象 */ if(i == null || typeof array === "string" || jQuery.isFunction(array) || array.setInterval) ret[0] = array; else while(i) ret[--i] = array[i]; } return ret; };
포인트는 3개입니다.
1. 매개변수가 전달되지 않더라도 빈 배열이 반환됩니다.
2. 배열 유사 객체가 전달되면 새로운 요소 배열이 반환됩니다.
3. 비배열 유사 객체가 전달되면 이 객체는 새 배열의 첫 번째 요소로 사용됩니다.
위 내용은 jQuery 소스코드 분석 makeArray 메소드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!