jquery的$.extend和$.fn.extend作用及區別,兼它們的一些小細節


 $.extend(obj);是為了擴展jquery本身,為類添加新的方法
   $.fn.extend(obj);給JQUERY對象添加方法。
如(1):

   $.extend({

        add:function(a,b){

            return a+b;
        }

    })

    $.add(5,8) //return  13

注意沒有,這邊的調用直接調用,前面不用任何對象。直接$.+方法名

(2):

$.fn.extend({

    clickwhile:function(){

        $(this).click(function(){

             alert($(this).val()) 

        })

    }

})

$('input').clickwhile();//當點擊輸入框會彈出該對象的Value值

注意調用時候前面是有對象的。即$('input') 這么個東西。

前面介紹了它們的本質區別,現在具體介紹一下它們分別的細節
其實$.extend()有兩種寫法
(1)$.extend(obj);
        這是只有一個參數,代表的意義是:為jQuery類添加類方法,可以理解為添加靜態方法,也就是全局方法。
(2)$.extend( target, object1,  object2,  object3,  object4,[objectN]);
        這是兩個或兩個以上的參數,代表的意義是:用一個或多個其他對象來擴展一個對象,返回被擴展的對象。即也就是擴展和覆蓋了第一個對象。
      

(function ($) {
            var aaa={name:'1',age:'20',sex:'NV'};
            var bbb={name:'2',age:'18'};
            var ccc = $.extend( aaa, bbb);
            alert(ccc.sex);//NV
            alert(aaa.name);//2
        })(jQuery);

不知大家見過 $.extend({}, aaa, bbb)中帶{}嗎?請看下面

(function ($) {
            var aaa={name:'1',age:'20',sex:'NV'};
            var bbb={name:'2',age:'18'};
            var ccc = $.extend({}, aaa, bbb);
            alert(ccc.sex);//NV
            alert(aaa.name);//1
        })(jQuery);

為何alert(aaa.name)的結果不同?如果你知道就不用往下看了
      這是因為:多個對象參數合並時,會破壞第一個對象的結構,所以可傳遞一個空對象作為第一個參數

$.fn.extend(obj);
     $.fn 中的fn是什么意思?
    其實是prototype,即$.fn=$.protoytpe;
   如果你知道原型就會立即明白他的意思


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM