当前位置: 首页 > 中文手册 > jQuery.makeArray() 函数详解

jQuery.makeArray() 函数详解

jQuery.makeArray()函数用于将一个类数组对象转换为真正的数组对象

所谓"类数组对象"就是一个常规的Object对象,但它和数组对象非常相似:具备length属性,并以0、1、2、3……等数字作为属性名。不过它毕竟不是数组,没有从数组的原型对象上继承下来的内置方法(例如:push()sort()等)。

该函数属于全局jQuery对象。

语法

jQuery 1.2 新增静态函数

jQuery.makeArray( object )

参数

参数描述
objectObject类型需要转换为数组的类数组对象。

注意事项

  • 一个类数组对象,它至少应该具备length属性,哪怕其值为 0,它可以没有"元素"(相当于空数组)。
  • 如果参数object没有length属性,则它不是类数组对象。jQuery.makeArray()会直接将其视作结果数组中的一个元素。
  • String对象虽然有length属性,但一般不将其视作类数组对象。该函数仍然直接将其视作结果数组中的一个元素。
  • 如果对象的最大数字属性大于或等于length属性,则以length属性为准,大于或等于其值的数字属性将被忽略。

返回值

jQuery.makeArray()函数的返回值为Array类型,返回转换后的数组对象。

示例&说明

类数组对象是非常常见的,例如我们经常使用的jQuery对象、NodeList对象以及函数内的arguments对象,都是类数组对象。它们都具有length属性,而且通过数字属性来访问对应的元素或参数。不过,它们毕竟不是真正的数组对象,因此无法使用数组对方的内置方法。通过jQuery.makeArray()函数,我们可以将类数组对象转换为一个真正的数组对象,从而使用数组对象的内置方法。

jQuery.makeArray()函数的jQuery示例代码如下:

//在当前页面内追加换行标签和指定的HTML内容
function w( html ){
	document.body.innerHTML += "<br/>" + html;
}

var obj = { 0:"CodePlayer", 1: "Hello", 2: 18, 3: true };
obj.length = 4;
// 类数组对象不是真正的数组
w( obj instanceof Array ); // false

var arr = $.makeArray( obj );
w( arr instanceof Array ); // true
w( arr.join(" ") ); // CodePlayer Hello 18 true
w( arr.length ); // 4

var obj2 = { };
obj2[2] = "DIY";
obj2.length = 1;
var arr2 = $.makeArray( obj2 );
w( arr2 instanceof Array ); // true
w( arr2.length ); // 1

var obj3 = { };
obj3.length = 0;
var arr3 = $.makeArray( obj3 );
w( arr3 instanceof Array ); // true
w( arr3.length ); // 0

var obj4 = { };
// 由于obj4没有length属性,直接将其转换为结果数组中的一个元素
var arr4 = $.makeArray( obj4 );
w( arr4 instanceof Array ); // true
w( arr4.length ); // 1
w( arr4[0] ); // [object Object]

// 虽然字符串有length属性,但它仍被视作结果数组中的一个元素
var arr5 = $.makeArray( "CodePlayer" );
w( arr5 instanceof Array ); // true
w( arr5.length ); // 1
w( arr5[0] ); // CodePlayer

运行代码

我们常用的jQuery对象、NodeList对象、arguments对象也都是类数组对象。

// jQuery对象也是一个类数组对象
var $p = $("p");
var arr1 = $.makeArray( $p );
w( $p instanceof Array ); // false
w( arr1 instanceof Array ); // true

// NodeList对象也是一个类数组对象
var p = document.getElementsByTagName("p");
var arr2 = $.makeArray( p );
w( p instanceof Array ); // false
w( arr2 instanceof Array ); // true


function foo(a, b){
	// arguments对象也是一个类数组对象
	var arr3 = $.makeArray( arguments );
	w( arguments instanceof Array ); // false	
	w( arr3 instanceof Array ); // true
}

foo(1, 2);

运行代码

21 2
我们认为: 用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。
CodePlayer技术交流群1CodePlayer技术交流群1

帮朋友打一个硬广告:

P2P网贷系统(Java版本) 新年低价大促销,多年P2P技术积累,系统功能完善(可按需定制,可支持第三方存管、银行存管),架构稳定灵活、性能优异、二次开发快速简单。 另可提供二次开发、安装部署、售后维护、安全培训等一条龙服务。

外行看热闹,内行看门道。可以自信地认为,在系统设计上,比市面上的晓风、迪蒙、方维、绿麻雀、国融信、金和盛等P2P系统要好。
深圳地区支持自带技术人员现场考察源代码、了解主要技术架构,货比三家,再决定是否购买。

也可推荐他人购买,一旦完全成交,推荐人可获得实际售价 10% 的返现。
有意向者,详情请 点击这里 联系,工作时间立即回复。