>  기사  >  웹 프론트엔드  >  jQuery 소스코드 분석 makeArray 메소드

jQuery 소스코드 분석 makeArray 메소드

黄舟
黄舟원래의
2017-07-19 09:49:201475검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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