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); // var obj2 = {};
obj2[2] = "DIY";
obj2.length = 1;
var arr2 = $.makeArray(obj2);
w(arr2 instanceof Array); // true
w(arr2.length); // var obj3 = {};
obj3.length = 0;
var arr3 = $.makeArray(obj3);
w(arr3 instanceof Array); // true
w(arr3.length); // var obj4 = {};
// 由于obj4没有length属性,直接将其转换为结果数组中的一个元素
var arr4 = $.makeArray(obj4);
w(arr4 instanceof Array); // true
w(arr4.length); //
w(arr4[0]); // [object Object] // 虽然字符串有length属性,但它仍被视作结果数组中的一个元素
var arr5 = $.makeArray("CodePlayer");
w(arr5 instanceof Array); // true
w(arr5.length); //
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

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

  1. jQuery.attr() 函数详解

    一,jQuery.attr()  函数详解: http://www.365mini.com/page/jquery-attr.htm 二,jQuery函数attr()和prop()的区别: http: ...

  2. jQuery.ready() 函数详解

    jQuery.ready() 函数详解 ready()函数用于在当前文档结构载入完毕后立即执行指定的函数. 该函数的作用相当于window.onload事件. 你可以多次调用该函数,从而绑定多个函数, ...

  3. jquery inArray()函数详解

    jquery inarray()函数详解 jquery.inarray(value,array)确定第一个参数在数组中的位置(如果没有找到则返回 -1 ). determine the index o ...

  4. 【转载】jQuery.extend 函数详解

    转载自:http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html jQuery.extend 函数详解 JQuery的e ...

  5. jQuery.hasClass() 函数详解

    jQuery.hasClass() 函数详解 hasClass()函数用于指示当前jQuery对象所匹配的元素是否含有指定的css类名. 该函数属于jQuery对象(实例). 语法 JavaScrip ...

  6. jQuery.ajax() 函数详解

    jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. ...

  7. jQuery.isEmptyObject() 函数详解

    所谓"空对象",即不包括任何可枚举(自定义)的属性.简而言之,就是该对象没有属性可以通过for...in迭代. 该函数属于全局jQuery对象. 语法 jQuery 1.4 新增该 ...

  8. jQuery.proxy() 函数详解

    jQuery.proxy()函数用于改变函数的上下文. 你可以将指定函数传入该函数,该函数将返回一个新的函数,其执行代码不变,但函数内部的上下文(this)已经被更改为指定值. 该函数属于全局的jQu ...

  9. jQuery.noConflict() 函数详解

    jQuery.noConflict()函数用于让出jQuery库对变量$(和变量jQuery)的控制权. 一般情况下,在jQuery库中,变量$是变量jQuery的别名,它们之间是等价的,例如jQue ...

随机推荐

  1. HBase 在HDFS 上的目录树

         总所周知,HBase 是天生就是架设在 HDFS 上,在这个分布式文件系统中,HBase 是怎么去构建自己的目录树的呢? 这里只介绍系统级别的目录树. 一.0.94-cdh4.2.1版本 系 ...

  2. 不使用ajax,无刷新提交表单

    <form action="form_action.asp" method="get" onsubmit"check_form()" ...

  3. 【PRML读书笔记-Chapter1-Introduction】引言

    模式识别领域主要关注的就是如何通过算法让计算机自动去发现数据中的规则,并利用这些规则来做一些有意义的事情,比如说,分类. 以数字识别为例,我们可以根据笔画规则启发式教学去解决,但这样效果并不理想. 我 ...

  4. SmartDoc(YUIDoc) 注释编写

    上面介绍了JS文档和Demo生成工具SmartDoc,本篇开始介绍一下注释的编写.SmartDoc使用的是YUIDoc的引擎,所以的注释规则都一样,先简单介绍下YUIDoc的注释编写. 编写注释是一个 ...

  5. [转]SpringMVC Controller&View数据传递

    Spring MVC3在controller和视图之间传递参数的方法:   一, 从controller往视图传递值, controller---->视图   1)简单类型,如int, Stri ...

  6. 【MSDN原版】Windows 7 with SP1各版本下载

    Windows 7 Ultimate with Service Pack 1简体中文旗舰版:Windows 7 Ultimate with Service Pack 1 (x86) - DVD (Ch ...

  7. forever守护nodejs进程

    客户端启动Node.js应用: node app.js # 方法一 npm start # 方法二 Express框架 这样可以正常启动应用,但是如果断开客户端连接,应用也就随之停止了.也就是说这样的 ...

  8. 使用Html5+C#+微信 开发移动端游戏详细教程 :(五)游戏图像的加载与操作

    当我们进入游戏时,是不可能看到所有的图像的,很多图像都是随着游戏功能的打开而出现, 比如只有我打开了"宝石"菜单才会显示宝石的图像,如果是需要显示的时候才加载, 会对用户体验大打折 ...

  9. Network - Nmap

    wiki - Nmap Nmap - homepage Nmap参考指南(Man Page) Nmap中文网 常用示例 1) Ping扫描,打印出对扫描做出响应的主机: nmap -sP 192.16 ...

  10. Odyssey.js – 创建互动的,有吸引力的故事

    Odyssey.js 是一个开源工具,它可以让你的地图,叙述和其他多媒体结合成一个美丽的故事.创建新的故事很简单,要求无非是一个现代的 Web 浏览器和一个好的想法.你可以使用现成的模板来控制和设计精 ...