理解jQuery的$.extend与$.fn.extend

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()等方法

猜你喜欢

转载自www.cnblogs.com/zengcongcong/p/10716870.html