https://www.cnblogs.com/xuxiuyu/p/5989743.html
上面这篇博客总结的很棒!!,以下对自己的认识做一个总结
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>理解$.extend与$.fn.extend</title> <script type="text/javascript" src="../js/jquery-1.11.3.min.js"></script> <style> </style> <script type="text/javascript"> (function($) { $.extend({ speak : function() { alert("how are you!"); } }); $.fn.extend({ say : function() { alert("hello!"); } }); })(jQuery); $(function(){ $.speak(); $("#myDiV").say(); }) </script> </head> <body> <div id="myDiv"></div> </body> </html>
将jquery理解为一个类,那么$.extend则会给这些类加上静态方法,扩展的是jquery这个类。
$.speak就只有$可以调用,而$("#myDiv")就不可以调用.speak()这个方法,正好比把jquery代表人类这个类,它可以吃喝笑跑,现在给它加上speak的功能,张三李四王五又不能代表全人类所以不能调用$.speak()方法
jQuery.extend(object); 为扩展jQuery类本身,为自身添加新的方法。
$.fn.extend就是给类的实例化对象加方法,比如div实例化为jquery对象后都可以调用.say()方法
$.fn.extend中,$是jquery的别名,fn是javascript中propotype的别名
$.fn.extend主要用于写插件,绝大部分插件都是去使用它
$.extend适用去去给jquery写一些init(),destroy()等方法