jQuery.makeArray() 函数详解

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

所谓"类数组对象"就是一个常规的Object对象,但它和数组对象非常相似:具备length属性,并以0、1、2、3……等数字作为属性名。

不过它毕竟不是数组,没有从数组的原型对象上继承下来的内置方法(例如:push()、 sort()等)。

jQuery.makeArray( object )

注意事项

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

返回值

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

---------------------------------------------------------------------------------------

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

栗子:

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

摘自:http://www.365mini.com/page/jquery_makearray.htm

时间: 2024-11-03 15:12:46

jQuery.makeArray() 函数详解的相关文章

jQuery extend函数详解

一 jQuery的扩展方法原型是 $.extend(dest,src1,src2,src3); 含义是将src1,src2,src3合并到dest中,返回值为合并后的dest,该方法合并后,dest的结构被修改. <script> var dest = {'type':'person'} var src1 = {'name':'lisi','age':12} var src2 = {'sex':'male'} var src3 = {'class':'class 1'} var result

jQuery插件开发及jQuery.extend函数详解和jQuery.fn与jQuery.prototype区别

一.jQuery插件开发分为两种:  1.类级别: 类级别你可以理解为拓展jquery类,最明显的例子是$.ajax(...),相当于静态方法. 开发扩展其方法时使用$.extend方法,即jQuery.extend(object); $.extend({ add:function(a,b){return a+b;} , minus:function(a,b){return a-b;} }); var i = $.add(3,2); var j = $.minus(3,2); 2.对象级别: 对

jQuery.hasClass() 函数详解

目录 jQuery.hasClass() 函数详解 语法 参数 返回值 示例&说明 jQuery.hasClass() 函数详解 hasClass()函数用于指示当前jQuery对象所匹配的元素是否含有指定的css类名. 该函数属于jQuery对象(实例). 语法 JavaScript: jQueryObject.hasClass( className ) 参数 参数 描述 className String类型指定的css类名. 返回值 hasClass()函数的返回值是Boolean类型,返回

jQuery.noConflict() 函数详解

jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权. 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQuery("p")和$("p")是等价的.由于变量$只有一个字符,并且特点鲜明,因此我们更加习惯使用$来操作jQuery库. 不过,其他JS库也可能使用变量$来进行操作,例如Prototype库.这个时候两个库可能会由于变量$的控制权问题而发生冲突. 此时,你可以使用该函数

jQuery.isEmptyObject() 函数详解

jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象. 所谓"空对象",即不包括任何可枚举(自定义)的属性.简而言之,就是该对象没有属性可以通过for...in迭代. 该函数属于全局jQuery对象. 语法 jQuery 1.4 新增该静态函数. jQuery.isEmptyObject( object ) 参数 参数 描述 object 任意类型需要进行判断的任意值. 注意:该参数应该始终是一个纯粹的JavaScript Object,因为其他类型(例如:

jQuery.noop() 函数详解

jQuery.noop()函数是一个空函数,它什么也不做.当某些时候你需要传入函数参数,而且希望它什么也不做的时候,你可以使用该函数,也无需再新建一个空的函数.该函数属于全局jQuery对象. jQuery 1.4 新增该静态函数. 返回值jQuery.noop()函数没有返回值(也可视作返回undefined). jQuery.noop()函数的源代码部分如下:noop: function() {} 以下jQuery示例代码用于演示jQuery.noop()函数的具体用法: // 传入一个空函

jQuery.proxy() 函数详解

jQuery.proxy()函数用于改变函数的上下文. 你可以将指定函数传入该函数,该函数将返回一个新的函数,其执行代码不变,但函数内部的上下文(this)已经被更改为指定值. 该函数属于全局的jQuery对象. 语法 jQuery 1.4 新增该静态函数.jQuery.proxy()函数有如下两种用法: 用法一: jQuery.proxy( function, context [, additionalArguments ] ) 将函数function的上下文对象更改为指定的context.

jQuery.ajax() 函数详解

jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. jQuery.ajax()函数是jQuery的底层AJAX实现.jQuery.get(). jQuery.post().load(). jQuery.getJSON(). jQuery.getScript()等函数都是该函数的简化形式(都调用该函数,只是参数设置有所不同或有所省略). 该函数属于全局

jQuery.isEmptyObject() 函数详解 转

原文地址 http://www.365mini.com/page/jquery_isemptyobject.htm jQuery.isEmptyObject()函数用于判断指定参数是否是一个空对象. 所谓"空对象",即不包括任何可枚举(自定义)的属性.简而言之,就是该对象没有属性可以通过for...in迭代. 该函数属于全局jQuery对象. 语法 jQuery 1.4 新增该静态函数. jQuery.isEmptyObject( object ) 参数 参数 描述 object 任意