浜厓妯″紡鐨勬牳蹇冩€濇兂鏄€氳繃鍑忓皯鍒涘缓瀵硅薄鐨勬暟閲忔潵鑺傜渷鍐呭瓨銆傚疄鐜拌繖涓€鐐圭殑涓昏鏂规硶鏄€氳繃浼樺寲閲嶅銆佺紦鎱㈠拰浣庢晥鍦板叡浜暟鎹殑浠g爜鏉ユ渶澶ч檺搴﹀湴鍑忓皯搴旂敤绋嬪簭涓殑鍐呭瓨浣跨敤銆備笌鐩稿叧瀵硅薄锛堝搴旂敤绋嬪簭閰嶇疆銆佺姸鎬佺瓑锛夊叡浜敖鍙兘澶氱殑鏁版嵁銆傚湪浜厓妯″紡涓紝鏈?涓牳蹇冩蹇碉細浜厓宸ュ巶銆佹帴鍙e拰鍏蜂綋浜厓銆傚畠浠殑鍏崇郴濡備笅鍥炬墍绀恒€傚唴閮ㄦ暟鎹紙intrinic锛夊拰澶栭儴鏁版嵁锛坋xtrinsic锛夊唴閮ㄦ暟鎹槸鍦ㄥ璞″唴閮ㄥ瓨鍌ㄥ拰璋冪敤鐨勩€傚閮ㄤ俊鎭槸瀛樺偍鍦ㄥ閮ㄧ殑鍙互鍒犻櫎鐨勬暟鎹€傚叿鏈夌浉鍚屽唴閮ㄦ暟鎹殑瀵硅薄鍙互鏈変竴涓敱宸ュ巶鏂规硶鍒涘缓鐨勫叡浜璞°€備韩鍏冩帴鍙e彲浠ユ帴鏀跺閮ㄧ姸鎬佸苟瀵瑰叾杩涜鎿嶄綔銆傚叿浣撲韩鍏冩槸鎺ュ彛鐨勫疄闄呭疄鐜帮紝璐熻矗瀛樺偍鍙互鍏变韩鐨勫唴閮ㄧ姸鎬侊紝鍚屾椂鍙互鎺у埗澶栭儴鐘舵€併€備韩鍏冨伐鍘傝礋璐g鐞嗗拰鍒涘缓浜厓瀵硅薄銆傛垜浠敤绉熻溅鐨勪緥瀛愭潵璇存槑銆傚湪涓€瀹舵苯杞︾璧佸叕鍙镐腑锛屽悓涓€杈嗚溅锛坈ar锛夊彲鑳芥湁濂藉嚑杈嗚溅锛岃€岃繖浜涜溅鐨勫瀷鍙凤紙model锛夈€佸埗閫犲晢锛坢aker锛夊拰璇嗗埆鐮侊紙vin锛夐兘鏄竴鏍风殑锛岄偅涔堟垜浠彲浠ヨ杩欎簺鏄唴鍦ㄦ暟鎹紝鍙互鐢卞崟涓叡浜璞ars瀛樺偍銆備絾鏄紝姣忚締杞﹀綋鍓嶇殑鍑虹鐘舵€侊紙availability锛夊拰绉熼噾锛坰ales锛夋槸涓嶅悓鐨勶紝鎴戜滑鍙互灏嗚繖浜涘瓨鍌ㄤ负澶栭儴鏁版嵁銆傚綋閫氳繃addCar娣诲姞鏂拌溅鏃讹紝createCar鍙互鏍规嵁vin鍒ゆ柇鏄垱寤烘柊杞︽杩樻槸杩斿洖宸叉湁杞︽銆傛墍浠ヤ笅闈㈡垜浠垱寤轰簡5鏉¤溅杈嗚褰曪紝浣嗗彧鏈?涓溅鍨嬪疄渚嬨€?/鐢ㄤ簬瀛樺偍姹借溅妯″瀷鐨勭嫭绔嬪璞lassCar{constructor(model,maker,vin){this.model=model;this.maker=鍒堕€犲晢锛涜繖涓?vin=vin锛泒}//瀛樻斁鍏蜂綋杞﹀瀷鐨勫鍣╲arcars=newMap();//濡傛灉杞﹀瀷宸茬煡锛屽垯杩斿洖vin锛涘鏋滄湭鐭ワ紝鍒欏垱寤簐arcreateCar=(model,maker,isbn)=>{varexistingCar=cars.has(vin);if(existingCar){杩斿洖姹借溅銆傚緱鍒帮紙钁¤悇閰掞級锛泒varcar=newCar(model,maker,vin);cars.set(vin,姹借溅);杩樿溅;};//鍑虹姹借溅鐨勫瓨鍌ㄥ鍣╲arcarList=[];//娉ㄥ唽绉熻溅鍒楄〃varaddCar=(model,maker,vin,availability,sales)=>{varcar={...createCar(model,maker,vin),sales,availability,vin};carList.push(姹借溅);杩斿洖姹借溅;};addCar("911","Porsche","FR345",true,2300);addCar("911","Porsche","FR345",false,2400);addCar("Togun","VW","AZ567",false,800);addCar("C-Class","Mercedes-Benz","AS356",false,1200);addCar("C-Class","姊呰禌寰锋柉-濂旈┌"s-Benz","AS356",true,1100);浠ヤ笂鏄粠鏁版嵁鐨勮搴﹀垎鏋愮殑锛屾垜浠篃鍙互浠庝簨浠跺鐞嗙殑鍙︿竴涓搴︽潵鐪嬩韩鍏冩ā寮忕殑搴旂敤銆侱OM锛圖ocumentObjectModel锛夋槸宓屽灞俠ylayer鏄殑锛屾墍浠ュ崟涓簨浠讹紝姣斿鐐瑰嚮浜嬩欢锛屽彲鑳戒細琚涓狣OM灞傜骇鐨勪簨浠跺鐞嗗櫒澶勭悊锛屼竴绉嶆槸鑷笂鑰屼笅鐨勪簨浠舵崟鑾凤紝鍙︿竴绉嶆槸鑷笅鑰屼笂鐨勪簨浠跺啋娉°€傚浜庝韩鍏冩ā寮忚€岃█锛屾垜浠彲浠ュ湪鍏冪礌澶栭儴鐨勫鍣ㄤ腑娣诲姞涓€涓韩鍏冿紝浠庝笅寰€涓婅嚜涓婅€屼笅鐨勭洃鍚簨浠讹紝鐒跺悗鏍规嵁闇€瑕佷娇鐢ㄧ浉搴旂殑閫昏緫鏉ュ鐞嗚繖浜涗簨浠讹紝鑰屼笉鏄儚鍐掓场涓€鏍峰皢鐐瑰嚮缁戝畾鍒板涓厓绱犱笂銆傚涓嬩緥瀛愭槸浣跨敤flyweight鏋勫缓涓€涓潪甯稿熀鏈殑鎵嬮鐞淬€傝繖閲岋紝jQuery鐢ㄤ簬灏嗗垵濮嬬偣鍑荤粦瀹氬埌瀹瑰櫒div锛屽皢璁稿鐙珛琛屼负杞崲涓哄叡浜涓恒€倂arstateManager={flyweight(){varself=this;$('#container').unbind().on('鐐瑰嚮','div.toggle',({target})=>{self.handleClick(target);});}};Facebook鐨勮┕濮嗘柉路甯曞灏旇タ锛圝amesPadolsey锛夋彁鍑轰簡鍙︿竴涓湪jQuery涓娇鐢‵lyweight鐨勬蹇点€傚湪浣跨敤jQuery鐨勪竴浜涘伐鍏锋柟娉曟椂锛屾渶濂戒娇鐢ㄥ唴閮ㄧ殑jQuery.methodName搴曞眰鏂规硶锛屾瘮濡俲Query.text锛涜€屼笉鏄娇鐢ㄥ閮ㄥ叕寮€鐨刯Query.fn.methodName澶栭儴鏂规硶锛屼緥濡俲Query.fn.text銆俲Query.fn.methodName鐨勫簳灞傛柟娉曘€備娇鐢ㄥ畠鍙互鍑忓皯鎶借薄灞傚苟閬垮厤鍒涘缓鏂扮殑jQuery鏂规硶銆傚洜姝わ紝James鎻愬嚭浜唈Query.single鐨勪竴涓兂娉曘€傛瘡娆¤皟鐢╦Query.single鎰忓懗鐫€灏嗗涓璞$殑鏁版嵁鏁村悎鎴愪竴涓泦涓叡浜殑鏁版嵁缁撴瀯锛屾墍浠ヤ篃鏄韩鍏冦€傛煡璇€俿ingle=(o=>{varcollection=jQuery([1]);returnelement=>{//缁欓泦鍚堝厓绱狅細collection[0]=element;//杩斿洖闆嗗悎锛歳eturncollection;};})();$('div').on('click',function(){varhtml=jQuery.single(this).next().html();console.log(html);});闂ㄩ潰妯″紡锛坒acade锛夐棬闈㈡ā寮忥紙facade锛夋槸涓€绉嶅湪jQuery绛塉avaScript搴撲腑缁忓父鍙互鐪嬪埌鐨勭粨鏋勩€傚畠鐨勭壒鐐规槸鍦ㄥ箷鍚庨殣钘忎簡寰堝瀹炵幇鏉ヨВ鍐冲鏉傜殑鍏煎鎬ч棶棰橈紝鍙湁閫氳繃鈥滈棬闈⑩€濆皢澶栭儴鎺ュ彛鎶借薄鎻愪緵缁欑敤鎴枫€傛瘮濡傛垜浠钩鏃朵娇鐢ㄧ殑鎼滅储寮曟搸锛屽彲浠ヨ鏄竴涓€滈棬闈⑩€濓紝鍏剁晫闈㈠拰鎿嶄綔鍐嶇畝鍗曚笉杩囦簡銆傜劧鑰岋紝鍏惰儗鍚庣殑瀹炵幇閫昏緫鍗撮潪甯稿鏉傘€傚畠娑夊強鍒拌皟搴︺€佺綉缁滀俊鎭殑鐖彇銆佽В鏋愩€佺储寮曠瓑锛屾渶缁堝睍绀虹殑鏄悳绱€傚悓鏍风殑锛屾瘮濡傛垜浠父鐢ㄧ殑jQuery鐨?()鏌ヨ鍣紝灏辨槸閫氳繃Sizzle寮曟搸鍦ㄥ悗鍙板鐞嗗緢澶氱敤浜庢帴鏀跺拰瑙f瀽鍚勭绫诲瀷鏌ヨ鐨勫鏉傚嚱鏁帮紝鍛堢幇缁欏紑鍙戣€呮洿鏂逛究鐨勪竴缁勫嚱鏁般€傞€夋嫨鍣ㄣ€備笅闈㈡垜浠彲浠ョ湅涓€涓?(document).ready(鈥?鐨勪緥瀛愶紝瀹冩槸鍦ㄥ悗鍙板熀浜庝竴涓猙indReady鍑芥暟瀹炵幇鐨勩€俧unctionbindReady(){//...if(document.addEventListener){//浣跨敤鏂逛究鐨勪簨浠跺洖璋僤ocument.addEventListener('DOMContentLoaded',DOMContentLoaded,false);//鍥為€€鍒皐indow.onload锛屽畠灏嗗缁堟湁鏁坵indow.addEventListener('load',jQuery.ready,false);//濡傛灉浣跨敤IE浜嬩欢妯″瀷}elseif(document.attachEvent){document.attachEvent('onreadystatechange',DOMContentLoaded);//鍥為€€鍒扮獥鍙c€俹nload锛岃繖灏嗗缁堟湁鏁坵indow.attachEvent('onload',jQuery.ready);}}澶栬妯″紡涓簀Query鐢ㄦ埛鎻愪緵浜嗗緢澶氫究鍒╋紝浣嗕篃涓嶆槸娌℃湁浠d环鐨勩€傝櫧鐒堕檷浣庝簡寮€鍙戞垚鏈紝浣嗗湪涓€瀹氱▼搴︿笂鐗虹壊浜嗘€ц兘銆傚浜庝竴浜涚畝鍗曠殑椤甸潰寮€鍙戯紝寰堝寮€鍙戣€呰繕鏄細閫夋嫨浣跨敤瀹冦€傜┒鍏跺師鍥狅紝杩欎簺搴旂敤瀵归〉闈㈠紑鍙戠殑瑕佹眰杩滀綆浜庡伐涓氭按骞筹紝浣嗘槸閫氳繃jQuery鑳藉鑺傜渷鐨勫紑鍙戞垚鏈湪寮€鍙戣繃绋嬩腑纭疄鍛堟寚鏁扮骇澧為暱锛岄櫎浜嗗叧娉ㄨ璁℃ā寮忚兘甯︽潵鐨勫ソ澶勶紝鎴戜滑鏇村簲璇ュ叧娉ㄤ娇鐢ㄥ満鏅紝鍦ㄥ紑鍙戞晥鐜囧拰鎬ц兘涔嬮棿鍙栧緱骞宠 銆傚鍚堟ā寮忥紙composite锛夊鍚堟ā寮忥紙composite锛夋槸鎸囧崟涓垨涓€缁勫璞″彲浠ョ敤鐩稿悓鐨勬柟寮忓鐞嗐€傚湪jQuery涓紝鍗曚釜鍏冪礌鍜屽厓绱犻泦鍚堝彲浠ョ粺涓€澶勭悊锛屽洜涓哄畠浠兘杩斿洖涓€涓猨Query瀵硅薄銆備綔涓虹ず渚嬩唬鐮侊細鍦ㄨ繖閲岋紝鎮ㄥ彲浠ヤ负鍗曚釜鍏冪礌鐨勪袱涓€夋嫨娣诲姞鐩稿悓鐨刾resentation-class灞炴€э紝渚嬪鍏锋湁鍞竴ID鐨勫厓绱狅紝鎴栬€呭叿鏈夌浉鍚屾爣绛惧悕绉板厓绱犵被鍨嬫垨绫诲睘鎬х殑涓€缁勫厓绱犮€?/鍗曚釜鍏冪礌$("#specialNote").addClass("show");$("#mainContainer").addClass("show");//鍏冪礌缁?("div").addClass("show");$(".item").addClass("鏄剧ず");鎵╁睍锛氫粈涔堟槸鍖呰妯″紡銆傚湪璁捐妯″紡涓紝瑁呴グ鍣紙decorators锛夊拰閫傞厤鍣紙adaptors锛夐€氬父璧峰埌鍖呰鐨勪綔鐢ㄣ€傝楗板櫒锛坉ecorator锛夊綋鎴戜滑涓嶆兂鐩存帴鍘讳慨鏀逛竴涓粍浠剁殑鏃跺€欙紝杩欐椂鍊欒楗板櫒灏辨淳涓婄敤鍦轰簡銆傛瘮濡傦細makeup鏄痡Query涓璞$殑鍖呰锛岃楗板櫒鍙互浣跨敤extend()鏉ュ疄鐜般€侫dapter锛堥€傞厤鍣級姣斿鎴戜滑涔颁簡涓€涓嫳鍥芥爣鍑嗙殑鐢靛瓙浜у搧锛屽鏋滃湪鍥藉唴浣跨敤锛屽氨鎵句笉鍒板悎閫傜殑鎻掑骇銆傚洜涓烘爣鍑嗕笉鍚岋紝瀛斿瀷涓嶅悓锛屾墍浠ヤ笉鑳芥彃銆備絾鏄鏋滄垜浠娇鐢ㄩ€傞厤鍣紝杩欎釜闂灏辫В鍐充簡銆傞€傞厤鍣ㄧ殑绀轰緥鍦╦Query涓篃鏃犲涓嶅湪銆傛瘮濡侰SS涓€忔槑搴︾殑get鍜宻et鍙兘鐢ㄤ笅闈㈢殑鏂瑰紡銆傛槸涓嶆槸鐪嬭捣鏉ュ緢鏂逛究锛?/璺ㄦ祻瑙堝櫒opacity://opacity:0.9;Chrome4+,FF2+,Saf3.1+,Opera9+,IE9,iOS3.2+,Android2.1+//杩囨护鍣?alpha(opacity=90);IE6-IE8//璁剧疆涓嶉€忔槑搴?(".container").css({opacity:.5});//鑾峰彇涓嶉€忔槑搴arcurrentOpacity=$(".container").css('opacity');浣嗗湪骞曞悗锛宩Query鍋氫簡寰堝宸ヤ綔銆俫et:function(elem,computed){//IE涓轰笉閫忔槑搴︿娇鐢ㄨ繃婊ゅ櫒(parseFloat(RegExp.$1)/100)+""锛氳绠楋紵"1":"";},set:function(elem,value){varstyle=elem.style,currentStyle=elem.currentStyle,opacity=jQuery.isNumeric(value)?"alpha(opacity="+value*100+")":"",filter=currentStyle&¤tStyle.filter||鏍峰紡杩囨护鍣▅|"";//濡傛灉IE娌℃湁甯冨眬锛屽畠浼氶亣鍒颁笉閫忔槑搴﹂棶棰?/閫氳繃璁剧疆缂╂斁绾у埆寮哄埗瀹僺tyle.zoom=1;//濡傛灉灏嗕笉閫忔槑搴﹁缃负1锛屽苟涓旀病鏈夊叾浠栬繃婊ゅ櫒//瀛樺湪-灏濊瘯鍒犻櫎杩囨护鍣ㄥ睘鎬?6652if(value>=1&&jQuery.trim(filter.replace(ralpha,""))===""){//璁剧疆鏍峰紡e.filter涓簄ull锛?"&""浠嶇劧鍦╟ssText涓繚鐣?/"filter:"濡傛灉"filter:"瀛樺湪锛?/clearType琚鐢紝鎴戜滑瑕侀伩鍏嶈繖绉峴tyle.removeAttribute//浠呴€傜敤浜嶪E锛屼絾鏄剧劧鏄浠g爜璺緞...style.removeAttribute("filter");//濡傛灉鍦╟ss瑙勫垯涓病鏈夊簲鐢ㄨ繃婊ゅ櫒鏍峰紡锛屾垜浠氨瀹屾垚浜唅f(currentStyle&&!currentStyle.filter){return;}}//鍚﹀垯锛岃缃柊鐨勮繃婊ゅ櫒鍊約tyle.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):filter+""+opacity;}};瑁呴グ鍣ㄨ繕鏄€傞厤鍣紵涓嶅悓鐨勬槸涓嶅悓鐨勪娇鐢ㄥ満鏅湁涓嶅悓鐨勫皝瑁呮柟寮忋€傝楗板櫒鏇村鐨勬槸閫氳繃灏佽宓屽鏉ユ坊鍔犱竴浜涗笉鍚岀殑鐗规€с€侫dapter灏佽鏇村鐨勬槸涓€涓璞″拰鍙︿竴涓璞′箣闂寸殑鍚屼竴涓帴鍙f槧灏勶細鍥犱负瀹冧滑閮藉湪涓嶈兘鐩存帴鏀瑰彉涓诲璞$殑鎯呭喌涓嬶紝鍔犱簡涓€灞傚皝瑁呫€傛垜浠粈涔堟椂鍊欏簲璇ラ伩鍏嶈楗板櫒鍜岄€傞厤鍣紵濡傛灉鎴戜滑鍙互鎺у埗鏁翠釜瀹炵幇锛堜篃灏辨槸璇达紝鎴戜滑鏈夎嚜宸辩殑搴擄級锛屾垜浠彲浠ラ€氳繃鏇存敼鍩烘湰浠g爜鏉ュ疄鐜扮浉鍚岀殑瀹炵敤绋嬪簭锛岃€屼笉鏄€氳繃鍖呰鍣ㄤ娇鎺ュ彛澶嶆潅鍖栥€傛澶栵紝涓庝换浣曡璁℃ā寮忎竴鏍凤紝濡傛灉鎮ㄥ繀椤讳娇鐢ㄥ寘瑁呭櫒妯″紡锛岃纭繚瀹為檯缁撴灉鍜屽奖鍝嶆瘮鍘熷鐨勩€佹棤妯″紡鐨勪唬鐮佹洿绠€鍗曘€佹洿瀹规槗鐞嗚В銆傛湰鏂囦负2鏈圖ay3鐨勫涔犵瑪璁帮紝鍐呭鏉ヨ嚜鏋佸鏃堕棿銆奐vascript杩涢樁瀹炴垬璇俱€嬶紝涓€璧疯繘姝ヰ煉煉?/p>
