ホームページ >ウェブフロントエンド >jsチュートリアル >jQueryのソースコード解析のmakeArrayメソッド

jQueryのソースコード解析のmakeArrayメソッド

黄舟
黄舟オリジナル
2017-07-19 09:49:201503ブラウズ

jQueryでは、makeArrayはプライベートメソッドであり、主に「配列のようなオブジェクト」を配列に変換するために使用されます。

それでは、「配列のようなオブジェクト」とは何ですか?

たとえば、すべての function には arguments オブジェクトがあり、これは実際のパラメータのリストであり、length 属性を持つこともできます。 subscript を通じてアクセスします。

	function foo(){
		//1
		console.log(arguments.length);
		//10
		console.log(arguments[0]);
	}
	
	foo(10);

さらに、HTMLCollectionNodeListなどの型のオブジェクトも「配列のようなオブジェクト」です。

それらには2の共通点があります:

1。 2. 要素には添え字を使用してアクセスできます。

配列と比較して、配列のようなオブジェクトには便利な API が多くないため、多くのフレームワークが変換メソッドを提供しています。

最も簡単な方法は、

Array.prototype

:

	function makeArray(array){
		return Array.prototype.slice.call(array);
	}	
sliceメソッドを使用することですが、

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。