jQuery.fn = jQuery.prototype = {...};
// 这个试讲jquery的原型赋给jquery.fn
jQuery.extend = jQuery.fn.extend = function(){...}
// jquery原型的方法为什么要赋给jquery的静态方法?
// 这段代码和继承有什么关系?
jQuery.fn = jQuery.prototype = {...};
// 这个试讲jquery的原型赋给jquery.fn
jQuery.extend = jQuery.fn.extend = function(){...}
// jquery原型的方法为什么要赋给jquery的静态方法?
// 这段代码和继承有什么关系?
因为我们不想new Jquery来用它,所以把它写到jquery的一个方法里面,Jquery函数返回jquery方法的实例,这个静态方法有着jquery所有的方法,这样就避免了你每次用都要new jquery。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
jQuery作为jquery对外暴露的全局对象,$是其简写形式。
jQuery.fn是对jQuery.prototype的简写。
某些方法我们希望在jquery实例对象使用(实例方法),也可以直接使用(静态方式调用),简单的实现就是你这里看到的extend方法。你可以看到jQuery中有很多方法采取的这种方式。全局类的调用(静态方式调用),你可以当做具有类似工具函数的功能。
至于这段代码和继承有什么关系?
我的回答是,没有关系!
extend方法,我更倾向于把他叫做扩展,jQuery.extend可以实现静态方法的扩展,jQuery.fn.extend可以实现jquery对象(实例对象)的扩展(jquery的插件开发主要采取这种方式)。
jquery的源码非常值得研究和学习!