最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery源码分析之makeArray方法

来源:动视网 责编:小采 时间:2020-11-27 20:15:59
文档

jQuery源码分析之makeArray方法

jQuery源码分析之makeArray方法:在jQuery中,makeArray是一个私有的方法,它主要用于将类数组对象转换为数组。那什么是类数组对象?比方说每一个function中都有一个arguments对象,它是实参列表,拥有length属性,还可以通过下标来访问实参。 function foo(){ //
推荐度:
导读jQuery源码分析之makeArray方法:在jQuery中,makeArray是一个私有的方法,它主要用于将类数组对象转换为数组。那什么是类数组对象?比方说每一个function中都有一个arguments对象,它是实参列表,拥有length属性,还可以通过下标来访问实参。 function foo(){ //


在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方法

jQuery源码分析之makeArray方法:在jQuery中,makeArray是一个私有的方法,它主要用于将类数组对象转换为数组。那什么是类数组对象?比方说每一个function中都有一个arguments对象,它是实参列表,拥有length属性,还可以通过下标来访问实参。 function foo(){ //
推荐度:
标签: 方法 代码 分析
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top