jQuery技术

jQuery的链式操作原理简介(2)

字号+ 作者:H5之家 来源:H5之家 2017-12-09 15:19 我要评论( )

在jQuery.fn.init函数的内部,当jQuery(selector,context)时,如果有第二个参数context的输入,那么会有这么一个逻辑,this.constructor( context ).find( selector );也就是会所,如果有第二个参数的话,因为在jQu

在jQuery.fn.init函数的内部,当jQuery(selector,context)时,如果有第二个参数context的输入,那么会有这么一个逻辑,this.constructor( context ).find( selector );也就是会所,如果有第二个参数的话,因为在jQuery.fn对象中,有这么一个属性,jQuery.fn.constructor= jQuery,所以,上式就可以变成jQuery(context).find(selector)了,所以,这样看来,第二个参数其实还不如我们直接以find方法查找,更具有优势的。

所以,这个算是为了什么,才给留的一个第二个参数呢?

扩展

既然说到这里,那么也就顺便说下jQuery.extend和jQuery.fn.extend对jQuery的扩展,在使用上的不同,也就很明显了

由上一小节中的简单的代码中,可以看出jQuery是一个函数,那么使用jQuery.extend进行扩展则是把新的方法,扩展到jQuery的静态属性和方法上,在使用时,只能通过jQuery.name的方法进行调用,新方法的层级是和上一小节中的fn方法同级。

而jQuery.fn.extend方法,则是把新的方法或者属性扩展到了jQuery.fn对象上,而该对象上的对象,是可以进行链式操作的。并且通过该方法添加的属性或者方法,会立刻在jQuery的所有对象中得到体现(这句话说得不清,看下面的例子)。

在上一小节代码的基础上,添加如下的一段代码:

var a = jQuery().init(); //jQuery.init //jQuery.init jQuery.fn.toObject = function(){ console.log("jquery.toObject"); return this; } //新添加的方法,可以在a对象中使用 //这是由原型链的共享特性决定的 a.toObject().toArray(); //jquery.toObject //jquery.toArray

如果对上述内容有疑问,请提出,或者请参考在第一小节中链接的三篇文章。

本文地址:?p=207

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • :target 伪类使用技巧 WEB前端开发

    :target 伪类使用技巧 WEB前端开发

    2017-11-23 15:24

  • 【分享】Web前端新手经典学习路线!,转行自学的看过来

    【分享】Web前端新手经典学习路线!,转行自学的看过来

    2017-11-23 10:40

  • AngularJS和nodejs,学习哪个更好。。。

    AngularJS和nodejs,学习哪个更好。。。

    2017-11-19 08:10

  • web前端面试题:JQuery的优缺点是什么

    web前端面试题:JQuery的优缺点是什么

    2017-10-14 13:01

网友点评