关于jquery一段源码的疑问?

jQuery.fn = jQuery.prototype = {...};
// 这个试讲jquery的原型赋给jquery.fn

jQuery.extend = jQuery.fn.extend = function(){...}
// jquery原型的方法为什么要赋给jquery的静态方法?
// 这段代码和继承有什么关系?
阅读 2.8k
2 个回答

jQuery作为jquery对外暴露的全局对象,$是其简写形式。

jQuery.fn是对jQuery.prototype的简写。

某些方法我们希望在jquery实例对象使用(实例方法),也可以直接使用(静态方式调用),简单的实现就是你这里看到的extend方法。你可以看到jQuery中有很多方法采取的这种方式。全局类的调用(静态方式调用),你可以当做具有类似工具函数的功能。

至于这段代码和继承有什么关系?
我的回答是,没有关系!
extend方法,我更倾向于把他叫做扩展,jQuery.extend可以实现静态方法的扩展,jQuery.fn.extend可以实现jquery对象(实例对象)的扩展(jquery的插件开发主要采取这种方式)。

jquery的源码非常值得研究和学习!

因为我们不想new Jquery来用它,所以把它写到jquery的一个方法里面,Jquery函数返回jquery方法的实例,这个静态方法有着jquery所有的方法,这样就避免了你每次用都要new jquery。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题