《jquery API文档中没有提到的那些函数》

2016-05-10 08:25
分类:编程  AJAX  
作者:jerrylsxu

已经不知道是第几次下定决心要看完jquery了,也不到是第几次刚看就放弃了,我想了想唯有持续不断的记录是我前进的动力,不想一直只看一个开始。

 

持续更新ing,求指教,求解释,求科普,写的都是皮毛,求指教

其实吧jquery的官方公布了很多实用的api,但是有很多的方法都没有被放出来的(当然不放出来估计是因为实用性不强或是很多都是基础方法,被调用的啦),这些方法也有一些看起来不错的哦,手贱边看边写出来,防止以后忘记了;

当然了如果有中文文档的api,偶对英文的api真心半眼都懒着看,呵呵必然对一些新出的方法木有看到思密达,要是有写的已经在api上了就告诉我,一定干掉它,希望我能坚持把jquery看完并且持续更新它。

先声明一下场景,我看的是jquery.1.8.2的jquery源码,但是很搓的事情是帮助文档用的是1.4.1。

 

1.$.fn.toArray()

    将给定的数据切割部分并返回,很遗憾的是jquery这里只是简单的要返回的数组(估计是没有什么大用场),不具有切割能力

 

    方法如下:  

    $.fn = {

         toArray: function() {

            return core_slice.call( this );

 

         }

    }

 

如果想让它有能切割数据改一下嘛(这样可不像jquery的get那么人性了,具体如何处理js原生的slice怎么处理它就怎么处理的)

 

    toArray: function(start, end) {

          return core_slice.call( this ,start, end);

    }

2.$.fn.pushStack

     这个家伙第一看看上去以为跟堆栈有关系呢,看来看去原来是组合一个新的元素集合(我先这么说吧)我后悔了,当我看到map的时候我才知 道,原来只有第一个参数的时候真的只是数组的操作)_(  ----堆栈最简单的构成方式就是用一个一维数组,好吧这个名字算是我不解了。

    代码如下:

 

   pushStack: function( elems, name, selector ) {

        // Build a new jQuery matched element set

        var ret = jQuery.merge( this.constructor(), elems );     

        // Add the old object onto the stack (as a reference)

        ret.prevObject = this;

        ret.context = this.context;

 

        if ( name === "find" ) {

            ret.selector = this.selector + ( this.selector ? " " : "" ) + selector;

        } else if ( name ) {

            ret.selector = this.selector + "." + name + "(" + selector + ")";

        }        

        // Return the newly-formed element set

        return ret;

    }

     我刚看它的时候真心被虎住了,不知道它是干什么的,后来我肤浅的看了一下,我的理解:简单的理解就是拼接了一个新串, 要是认真的看一下jquery的not、closest、 find等这类在一个集合中调用的方法就会发现它的作用了

      例如:$('div').not('span')  =>  $('div.not(span)')  他并不想我之前预想的,先$('div')变成一个数组,然后在去去除数据而是直接在找的过程中干掉span对应的数据(我是这么想的).

 

3.$.fn.end()

    其实吧他就是 $(document)  是一个jquery对象啦^_^  

 

 

4.$.fn.push、sort、splice

    这几个函数都什么意义了,全是直接调用js原生的实现了。

 

 

5.$.holdReady

    这个东东虽然定义了,其实我没看到那里调用,看了一眼注释貌似是控制$.ready的状态的。

 

 

6.$.isFunction(obj)  

    确定对象是否是函数 其实吧我觉的就是它内部的class2type 家伙其了很大作用的

 

  1.     [object Array]"array"
  2.     [object Boolean]"boolean"
  3.     [object Date]"date"
  4.     [object Function]"function"
  5.     [object Number]"number"

     

       [object Object]"object"

  1.    [object RegExp]"regexp"
  2.    [object String]"string"
  3.  
  4.  

7.$.isNumeric(obj)

      确定对象是否是数字,isArray 是否是数组,isWindow 是否是window对象本身或是包含window对象,这个嘛在iframe中可以看出来

8.$.isPlainObject

      这个家伙是检查一个对象是不是普通对象(不能是window对象,不能是dom还要不能有constructor和isPrototypeOf,真是一个干瘪的对象啊,不知道他要干什么用的)

9.isEmptyObject(obj)

      检查对象是否是空对象

10.$.error(msg)

     给浏览器的控制台输出一个error  ---486

11.parseHTML

      将字符串转换成一个html的串。如果是标签的串则返回一个js的dom,还支持串中是否过滤script标签和执行能力。看了一下,jquery主要利用它在初始化(init)页面的时候将js动态插入的包含标签的串变成一个jquery的dom,然后就用它做该做的动作;

        例如:$('< span >aa\').appendTo('body');  把这个串变成了一个dom然后插入body标签中(这个方法可以算作无意义,因为$('html串')更实用)

12.$.parseJSON(data)

        将一个字符串转化为json对象,有了它在ie6、7下可以不用引入JSON2.js啦,测试是这个样子的

13.$.parseXML(data)

        将一个xml的串转换成js的对象

14.$.globalEval(data)

        将一个串做js执行

15.$.camelCase(data)

       将字符串转换成峰陀的命名方式

16.$.nodeName(elem, name)

       判断一个js的dom是否是某一个标签的名字(第一个只能单个dom,不能使数组) 

17.$.makeArray(arr, ret)

       合并两个对象  ,如果都是数组则arr 合并到ret后,// results is for internal usage only 

18.$inArray(elem, arr, startpos)

       在数组从指定位置开始的搜索元素,-1没找到

19.$.merge(first,second)

       合并两个数组

20.$.grep(elems, callback, inv )

       从集合中筛选条件元素$.grep([1,2,3,4],function(i){return i%3;}) 

21.$.proxy(fn, context)

主要是让context集成fn中的某个让发,主要原理就是用了apply

谁便写一个例子:var obj = {a:function(){alert(1)},b:function(){alert(2)}};

$.proxy(obj, 'b')();执行一下就知道。其实就是obj.b()了

其实内部的核心代码就是

         fn.apply( context, args.concat( core_slice.call( arguments ) ) );

 22. $.now

      顾名思义获取当前时间戳了 函数内容很简单了return ( new Date() ).getTime();

好文要顶 收藏该文 我要举报
如果您觉得本文对你有用,不妨帮忙点个赞,或者在评论里给我一句赞美,小小成就都是今后继续为大家编写优质文章的动力!
上一篇:jQuery全屏动画焦点图
下一篇:Bootstrip 的select的数据绑定问题

一起悦读网    Copyright © 2016    浙ICP备11048508号