日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
jQuery1.5新特征之插件機(jī)制的救贖

感覺(jué)jQuery1.5***的改變有兩個(gè),jQuery子類與異步列隊(duì),本文只談jQuery子類。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供積石山保安族東鄉(xiāng)族企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、H5頁(yè)面制作、小程序制作等業(yè)務(wù)。10年已為積石山保安族東鄉(xiāng)族眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

首先要明白為何要推出此功能,是強(qiáng)化它那基本為零的OO功能嗎?不是,從下面的源碼你應(yīng)該知道它不是讓你自定義類。但這也是個(gè)愚蠢的問(wèn)題,因?yàn)檫@樣,這方法就叫Class,而不是subclass。

 
 
 
  1. subclass: function(){    
  2.     function jQuerySubclass( selector, context ) {    
  3.         return new jQuerySubclass.fn.init( selector, context );    
  4.     }    
  5.     jQuerySubclass.superclass = this;    
  6.     jQuerySubclass.fn = jQuerySubclass.prototype = this();    
  7.     jQuerySubclass.fn.constructor = jQuerySubclass;    
  8.     jQuerySubclass.subclass = this.subclass;    
  9.     jQuerySubclass.fn.init = function init( selector, context ) {    
  10.         if (context && context instanceof jQuery && !(context instanceof jQuerySubclass)){    
  11.             context = jQuerySubclass(context);    
  12.         }    
  13.         return jQuery.fn.init.call( this, selector, context, rootjQuerySubclass );    
  14.     };    
  15.     jQuerySubclass.fn.init.prototype = jQuerySubclass.fn;    
  16.     var rootjQuerySubclass = jQuerySubclass(document);    
  17.     return jQuerySubclass;    
  18. },  

我想它真正的用意是為了改善其插件機(jī)制。

jQuery的插件是很容易開(kāi)發(fā),隨便在其原型鏈上添加個(gè)方法就叫稱“插件”,因此jQuery的插件很多,垃圾插件也很多,由于停止更新變成垃圾的也很多。

 
 
 
  1. jQuery.fn.garbage = function(){    
  2.     alert("這是垃圾插件!")    
  3. }   

當(dāng)然這是在最理想的情況下,插件才這么簡(jiǎn)單(好像一個(gè)函數(shù)算一個(gè)插件也蠻多的)。比如你開(kāi)發(fā)一個(gè)插件,然后你同事也開(kāi)發(fā)了一個(gè)同名的插件,這時(shí)出問(wèn)題吧。還有這種情況:

 
 
 
  1. (function($){//插件一    
  2.      $.fn.extend({    
  3.              a:function(){//插件的主體    
  4.                 this.b()    
  5.            },    
  6.             b:function(){}//輔助函數(shù)    
  7.        })    
  8.  })(jQuery);    
  9.   (function(){//插件二    
  10.      $.fn.extend({    
  11.             c:function(){//插件的主體    
  12.                 this.b()    
  13.            },    
  14.             b:function(){}//輔助函數(shù)       
  15.       })    
  16. })(jQuery);  

這時(shí)這兩個(gè)插件混用就有問(wèn)題了,插件一的b與插件二的b可能不是一個(gè)東西,這機(jī)率還很大,因?yàn)椴寮豢赡苁敲绹?guó)的菜鳥(niǎo)開(kāi)發(fā),插件二是德國(guó)的菜鳥(niǎo)開(kāi)發(fā)的,而且外國(guó)人都非常喜歡把他們的插件放到j(luò)Query官網(wǎng)的插件展示區(qū),國(guó)內(nèi)的懶鬼兼菜鳥(niǎo)就很容易踩雷了。

插件混亂之災(zāi)隨著jQuery的流行日益嚴(yán)重,由于jQuery易學(xué)易用,公司前端不夠人手,隨便抓個(gè)后臺(tái)就行了。于是前端也像中國(guó)樓市那樣出現(xiàn)泡沫了,一個(gè)頁(yè)面引用N個(gè)插件,滿屏的選擇器,維護(hù)成本超高,近乎不可能。

歸根結(jié)底,問(wèn)題是大家都在污染jQuery與jQuery.fn這個(gè)兩個(gè)對(duì)象,就像以前大家都愛(ài)到全局作用域那里拉屎那樣。全局作用域是公廁,去那兒是不可避免的,但我們可以用子類來(lái)轉(zhuǎn)移jQuery,jQuery.fn的負(fù)擔(dān)。

在jQuery1.5中,我們就應(yīng)該這樣寫(xiě)插件。

 
 
 
  1. var MyjQuery = jQuery.subclass();    
  2. MyjQuery.fn.writeHello = function(){ this.text('Hello World'); };    
  3. MyjQuery('p').writeHello();  

由于MyjQuery是jQuery的子類,因此擁有其所有能力,鏈?zhǔn)讲僮饕粯記](méi)問(wèn)題。

 
 
 
  1. MyjQuery('div').css('border', '1px red solid').writeHello();  

我們還可以對(duì)jQuery原有方法進(jìn)行修改,不用因?yàn)槟承╇[性bug而改源碼了:

 
 
 
  1. MyjQuery.fn.text = function(val) {    
  2.   var orig = jQuery.fn.text;    
  3.   if(typeof val === "string") {    
  4.     return orig.call(this, "!!"+ val +"!!");    
  5.   } else {    
  6.     return orig.apply(this, arguments);    
  7.   }    
  8. };    
  9. MyjQuery('.aaa').text("text");    
  10. MyjQuery('.aaa').text();   
  11.    //!!text!!    
  12. //不影響jQuery自身    
  13. jQuery('.aaa).text('text'); //text  

當(dāng)然這也帶來(lái)一個(gè)問(wèn)題,插件都變?yōu)榻壎ǖ叫碌拿臻g上了,重新跑到全局作用域上……看來(lái)進(jìn)一步的救贖要等其包加載機(jī)制出來(lái)了。因此少用插件,提高自身的javascript(非jQuery)能力才是基本。

原文鏈接:http://www.cnblogs.com/rubylouvre/archive/2011/01/21/1940935.html

【編輯推薦】

  1. 精益求精 jQuery代碼的分析與優(yōu)化
  2. jQuery1.5的六大細(xì)節(jié)改進(jìn):DOM操作更簡(jiǎn)單
  3. jQuery入門:數(shù)組的三種類型三種操作
  4. jQuery 1.5***個(gè)Beta版發(fā)布 付下載
  5. 10個(gè)超贊超實(shí)用的免費(fèi)jQuery圖片插件 附下載
  6. jQuery 1.5正式版發(fā)布 五大變化引人注目

當(dāng)前標(biāo)題:jQuery1.5新特征之插件機(jī)制的救贖
網(wǎng)站鏈接:http://www.5511xx.com/article/djehjsg.html