jquery源码--isWindow isArraylike makearray

1.$.isWindow 判断是不是window对象

var isWindow = function(obj){
     return obj != null && obj == obj.window;
//window对象有个window属性指向自己
}

2.isArraylike 判断一个对象是不是数组或类数组对象

var isArrayLike = function(obj){
        var length = obj.length,
            type = $.type(obj);
        if(type == ‘function‘ || $.isWindow(obj) ){
        //function和window都有length属性
            return false;
        }
        if(obj.nodeType == 1 && length){
            return true;
        }

        return type === ‘array‘ || length === 0 ||
                typeof length === ‘number‘ && length > 0 && (length - 1) in obj;
    // typeof length === ‘number‘ && length > 0 && (length - 1) in obj就是针对类数组对象的  /*类数组对象举例    *var obj = {‘0‘ : 0,‘1‘ : 1, ‘2‘ : 2,‘length‘ : 3}    */
    }    

3.$.makeArray()  强制转换成数组类型

var makeArray = function(arr, result){
        var ret = result || [];
        if(arr != null){
            if(isArraylike(arr)){//string array
                $.merge(ret, typeof arr === ‘string‘ ? [arr] : arr);//$.merge可以修改第一个参数
            }else{
                [].push.call(arr);
            }
        }
        return arr;
    };

下面是各种数值类型作为Object参数时的返回,例如Object(true),它返回Boolean {},string类型返回一个类数组对象,array类型直接返回一个数组,date类型返回一长串,number类型返回number {},等等。所以通过isArraylike函数过滤之后,只剩下array和string类型了。

jquery源码--isWindow isArraylike makearray

时间: 2024-08-20 12:15:36

jquery源码--isWindow isArraylike makearray的相关文章

jquery 源码学习(四)构造jQuery对象-工具函数

jQuery源码分析-03构造jQuery对象-工具函数,需要的朋友可以参考下. 作者:nuysoft/高云 QQ:47214707 EMail:[email protected] 声明:本文为原创文章,如需转载,请注明来源并保留原文链接. 读读写写,不对的地方请告诉我,多多交流共同进步,本章的的PDF等本章写完了发布. jQuery源码分析系列的目录请查看 http://nuysoft.iteye.com/blog/1177451,想系统的好好写写,目前还是从我感兴趣的部分开始,如果大家有对哪

jQuery源码学习笔记:扩展工具函数

// 扩展工具函数 jQuery.extend({ // http://www.w3school.com.cn/jquery/core_noconflict.asp // 释放$的 jQuery 控制权 // 许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样. // 在 jQuery 中,$ 仅仅是 jQuery 的别名,因此即使不使用 $ 也能保证所有功能性. // 假如我们需要使用 jQuery 之外的另一 JavaScript 库,我们可以通过调用 $.noC

jQuery源码研究分析学习笔记-静态方法和属性(10)

jQuery源码中定义了一些重要的静态属性和方法,它们是其他模块实现的基础,整体的源码结构如下 //把window.jQuery和winow.$备份到局部变量_jQuery和_$ _jQuery = window.jQuery, // Map over the $ in case of overwrite _$ = window.$, jQuery.extend({ //许多 JavaScript 库使用 $ 作为函数或变量名,jQuery 也一样.在 jQuery 中,$ 仅仅是 jQuery

jquery 源码学习(三)

jQuery源码分析-03构造jQuery对象-源码结构和核心函数,需要的朋友可以参考下. 作者:nuysoft/高云 QQ:47214707 EMail:[email protected] 毕竟是边读边写,不对的地方请告诉我,多多交流共同进步.本章还未写完,完了会提交PDF. 前记: 想系统的好好写写,但是会先从感兴趣的部分开始. 近期有读者把PDF传到了百度文库上,首先感谢转载和传播,但是据为已有并设置了挺高的财富值才能下载就不好了,以后我整理好了会传到文库上.请体谅一下. 3. 构造jQu

Jquery源码分析

1.概述 jQuery是一个非常优秀的Js库,与prototype,YUI,Mootools等众多的Js类库相比,它剑走偏锋,从web开发最实用的角度出发,抛除了一些中看但不实用的东西,为开发者提供一个短小精悍的类库.由于其个短小精悍,使用简单方便,性能相对高效.众多的开发者都选择Jquery来进行辅助的web开发. 在使用jquery时开发,我们也会时常碰到许多的问题,但是jquery的代码很晦涩,难起看懂,当开发时出现了问题,看不懂源码,不知道如何去排错. John Resig,Jquery

jquery源码分析(二)——结构

再来复习下整体架构: jQuery源码分析(基于 jQuery 1.11 版本,共计8829行源码) (21,94)                定义了一些变量和函数jQuery=function(){} (96,280)        给jQuery添加一些方法和属性,jQuery.fn=jQuery.prototype(285,347)        extend:        jQuery的一些继承方法        更容易进行后续的扩展                       

jquery 源码学习(*)

最近在做日志统计程序,发现对方的程序是在Jquery基础上进行开发的,而公司的网站的框架是prototype.而且我也早就想了解一下Jquery源码,故决定研究Jquery源码,模拟它的方法 Jquery这么普及,必有它过人之处,通过开源代码进行学习,是个不错的学习方法啊! 以下是我模拟的方法,我尽量简化方法. 定义对象C(类似于jquery的$方法)——这个也是jquery设计非常巧妙的地方 复制代码 代码如下: (function(){ var _cQuery = window.cQuery

jQuery源码分析系列(38) : 队列操作

Queue队列,如同data数据缓存与Deferred异步模型一样,都是jQuery库的内部实现的基础设施 Queue队列是animate动画依赖的基础设施,整个jQuery中队列仅供给动画使用 Queue队列 队列是一种特殊的线性表,只允许在表的前端(队头)进行删除操作(出队),在表的后端(队尾)进行插入操作(入队).队列的特点是先进先出(FIFO-first in first out),即最先插入的元素最先被删除. 为什么要引入队列? 我们知道代码的执行流有异步与同步之分,例如 var a

jquery源码之工具方法

jQuery 作为时下前端的"霸主".它的强大已毋庸置疑.简洁,效率,优雅,易用等优点让人很容易对它珍爱有加. 作为js的小菜,为了提升自我等级,根据各大神博客精辟的解析,硬啃了jQuery源码.在此,并不是要解析啥源码啥的(也没到那个级别哈),读书笔记,仅此而已. 所谓磨刀不误砍柴功,jQuery在大展神通之前也做了许多准备工作.比如说他的一些工具方法: 首当其冲的是他的继承扩展方法: jQuery.extend 其实也不是传统意义的继承,说mixin可能更恰当一些. // 首先看看