Maison >interface Web >js tutoriel >Méthode makeArray d'analyse du code source jQuery

Méthode makeArray d'analyse du code source jQuery

黄舟
黄舟original
2017-07-19 09:49:201503parcourir

Dans jQuery, makeArray est une méthode privée, qui est principalement utilisée pour convertir des "objets de type tableau" Convertir en tableau.

Alors qu'est-ce qu'un "objet de type tableau"  ?

Par exemple, chaque fonction a un objet arguments, il est une liste de paramètres réels, avec les attributs length, et les paramètres réels sont également accessibles via des indices.

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

De plus, les objets de types comme HTMLCollection, NodeList sont également "Objet de type tableau".

Ils ont 2 points en commun :

1 Avoir l'attribut longueur.

2. Les éléments sont accessibles via des indices.

Par rapport aux tableaux, les objets de type tableau manquent de nombreuses API pratiques, c'est pourquoi de nombreux frameworks fournissent des méthodes de conversion.

Le plus simple est d'utiliser la méthode slice sur Array.prototype :

	function makeArray(array){
		return Array.prototype.slice.call(array);
	}	

mais jQuery Dans Afin d'être compatible avec les premiers IE, notre propre implémentation est fournie.

	
	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;
	};

Son impact est de 3 points :
1 Même si aucun paramètre n'est passé, un tableau vide sera renvoyé.

2. Si un objet de type tableau est transmis, un nouveau tableau d'éléments sera renvoyé.

3. Si un objet non semblable à un tableau est transmis, cet objet sera utilisé comme premier élément du nouveau tableau.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn