濡傛灉瑙夊緱鏂囩珷涓嶉敊锛岃鍏虫敞鐐硅禐鍒嗕韩锛佹寔缁垎浜妧鏈崥鏂囷紝鍏虫敞寰俊鍏紬鍙佛煈夝煆诲墠绔疞eBron閽堝闈㈠悜瀵硅薄杞欢璁捐杩囩▼涓叿浣撻棶棰樼殑绠€娲佷紭闆呯殑瑙e喅鏂规鈥斺€旇璁℃ā寮忚璁℃ā寮忓師鐞嗭細銆嬫壘鍑虹▼搴忎腑鐨勫彉鍖?鍜孋hanges琚皝瑁呫€嬩负浠€涔堣瀛︿範璁捐妯″紡锛熸垜浠庝簨寮€鍙戜竴骞村浜嗭紝鐪嬭繃鑰侀」鐩紝浠庨浂鍒颁竴涓惌寤轰竴涓」鐩€傞殢鐫€椤圭洰鍜屼笟鍔$殑涓嶆柇鎵╁ぇ锛屽鏋滃啓鍑烘潵鐨勪唬鐮佷笉鏄璁″嚭鏉ョ殑锛屼細鎱㈡參鍙樻垚涓€搴mm...x灞便€備汉涔嬫墍浠ヨ兘鐧讳笂椋熺墿閾剧殑椤剁锛屾槸鍥犱负鍙互瀛︿範銆佹€荤粨銆佷娇鐢ㄢ€滃悕瀛椻€濆拰鈥滃伐鍏封€濄€傝璁℃ā寮忎笉鏄嚟绌哄彂鏄庣殑锛屽畠鏄湪涓€瀹氱殑涓氬姟鍦烘櫙涓嬬紪绋嬬殑鏈€浣冲疄璺碉紝缁忚繃澶ч噺鐨勯」鐩疄璺垫€荤粨鍑烘潵鐨勮В鍐虫柟妗堬紝缁欏畠璧蜂釜鍚嶅瓧锛屽氨鎴愪簡璁捐妯″紡銆傚氨鍍忕鐞冩垬鏈痳t锛屾帶鐞冨悗鍗粡甯镐細鍠婂嚭澶氬皯鎴樻湳鏉ユ墦锛岃€屼笉鏄竴涓竴涓寚鎸ャ€傜畝鍗曠殑浠e彿寰€寰€姣斿啑闀跨殑鎻忚堪鏇翠紭闆呫€傛湁鍙兘浣犵粡甯哥敤涓€绉嶅彲浠ユ弿杩扮殑鏂瑰紡缂栧啓绋嬪簭锛屼絾浣犱笉鐭ラ亾瀹冪殑鍚嶅瓧銆傚畠鍙兘鏄竴绉嶈璁℃ā寮忋€傛墍浠ュ湪瀛︿範鐨勮繃绋嬩腑锛屾垜浠父甯镐細鏈夎繖鏍风殑鎰熻锛氬憸鍛滃憸锛侊紒鎴戠粡甯哥敤杩欎釜涓滆タ锛岀粡甯歌繖鏍峰啓锛屽師鏉ヨ繖灏辨槸xx妯″紡锛佹渶鍚庯紝涓轰粈涔堣瀛︿範璁捐妯″紡锛熻櫧鐒舵湁鏃跺€欒璁℃ā寮忎細澧炲姞浠g爜鐨勫鏉傚害锛屽鍔犲紑鍙戞垚鏈紝浣嗘槸鍗村ぇ澶ч檷浣庝簡缁存姢鎴愭湰銆傚浘涔﹂鐨勪功浜曠劧鏈夊簭鍦版暎钀藉湪鍚勪釜瑙掕惤锛岀姽濡傚ぇ娴锋崬閽堬紱浣嗗鏋滄妸瀹冧滑璐翠笂鏍囩锛屽垎绫绘湁搴忓湴鏀惧湪鎸囧畾鐨勪功鏋朵笂锛屽氨鏇村鏄撴壘鍒板畠浠簡銆傛兂璞′竴涓満鏅紝鏈変竴澶╋紝浣犳寚鐫€涓€娈典唬鐮佸紑濮嬪拻楠傦紝杩檟灞辨槸璋佸啓鐨勶紒榧犳爣涓婄Щ锛実it淇敼璁板綍鏄剧ず锛屽摝锛佹垜鍐欎簡瀹冿紝杩欏緢濂姐€傝刀绱у涔犺璁℃ā寮忥紝浼橀泤鍦板啓鍑虹畝娲併€佸彲閲嶇敤銆佹槗缁存姢鐨勭▼搴弤鍗曚緥妯″紡1.淇濊瘉涓€涓被鍙湁涓€涓疄渚嬶紝骞舵彁渚涘叏灞€璁块棶鐐硅闂畠2.涓昏瑙e喅aglobaluse绫婚绻佸垱寤哄拰閿€姣侊紝鍗犵敤鍐呭瓨瀹炵幇鍗曚緥妯″紡銆傚疄鐜颁竴涓畝鍗曠殑鍗曚緥妯″紡骞朵笉澶嶆潅銆傛棤闈炲氨鏄繚瀛樺疄渚嬪璞°€備笅娆¤幏鍙?鍒涘缓瀵硅薄鏃讹紝浼氱洿鎺ヨ繑鍥炲埌涔嬪墠鍒涘缓鐨勫疄渚嬨€傛渶绠€鍗曠殑渚嬪瓙PatternclosureimplementationES6implementation//浣跨敤闂寘瀹炵幇varSingleton=(function(){varinstance;functionInstance(){}returnfunction(){if(!instance){instance=newInstance();}杩斿洖瀹炰緥;};})();varsingle1=Singleton();varsingle2=Singleton();console.log(single1===single2);//true//ES6瀹炵幇绫籗ingleton{constructor(){if(!Singleton.instance){Singleton.instance=this;}杩斿洖鍗曚緥瀹炰緥锛泒}constsingle1=newSingleton();constsingle2=newSingleton();console.log(single1===single2);//truelazySingleton鎯版€у崟渚嬶細鍒濆鍖栨椂涓嶅垱寤哄疄渚嬶紝鑾峰彇瀹炰緥鏃跺垱寤哄疄渚嬶紝绫讳技浜庡墠绔祫婧愬欢杩熷姞杞界殑鎬濇兂//闈炴儼鎬у崟渚嬬被Tool{}classSingleTon{constructor(name,...args){this.name=nameif(!SingleTon.instance){SingleTon.instance=newTool(args)}}getName(){杩斿洖this.name;}闈欐€乬etInstance(){杩斿洖杩欎釜瀹炰緥锛泒}//鎯版€у崟渚嬬被Tool{}classSingleTon{constructor(name){this.name=name}getName(){returnthis.name;}staticgetInstance(){if(!this.instance){this.instance=newTool(arguments)}returnthis.instance;}}閫忔槑鍗曚緥鍜屼唬鐞嗗崟渚嬮€忔槑鍗曚緥灏嗗疄渚嬬殑鍒涘缓鍜屾柟娉曠殑鎵ц灏佽鍒颁竴涓被涓紝涓嶅お绗﹀悎鈥滃崟涓€鑱岃矗鍘熷垯鈥濓紝浠g爜涓嶆槗闃呰锛屼篃涓嶆槗鏀逛唬鐞嗕汉銆傚崟涓€鑱岃矗鍘熷垯鈥濓紝浠g爜鏄撹鏄撴敼//閫忔槑鍗曚緥绫籸eturncreatePerson.instance=this;}init(){console.log('Mynameis',this.name)}}constp1=newcreatePerson('lebron')constp2=newcreatePerson('james')p1.init();//Mynameislebronp2.init();//Mynameislebron//proxysingletonclassPerson{constructor(name){this.name=name;}init(){console.log('Mynameis',this.name)}}classcreatePerson{鏋勯€爐or(name){if(!createPerson.instance){createPerson.instance=newPerson(name)}returncreatePerson.instance;}}constp1=newcreatePerson('lebron')constp2=newcreatePerson('james')p1.init();//鎴戠殑鍚嶅瓧鏄嫆甯冩湕p2.init();//Mynameislebron鏈€缁堢増鏈幓鎺変簡姣忔瀹炵幇涓€涓被鐨勫崟渚嬫ā寮忔椂CV閲嶅鐨勬ā鏉夸唬鐮侊紝涓嶇鍚堥鏈熷洜姝わ紝鎴戜滑鍙互閬靛惊璁捐妯″紡鈥滄壘鍑虹▼搴忓湪鍝噷鍙戠敓鍙樺寲骞跺皝瑁呭彉鍖栤€濈殑鍘熷垯锛屽彲浠ュ仛濡備笅鏀归€燾lassSingleTon{constructor(fn){letsingleInstance;functionsingleConstructor(...args){//绗竴涓竴娆℃€у疄渚嬪寲if(!singleInstance){singleInstance=newfn(...args);}//澶氭瀹炰緥鍖栫洿鎺eturnreturnsingleInstance;}singleConstructor.prototype=Object.create(fn.prototype);杩斿洖鍗曚釜鏋勯€犲嚱鏁帮紱}}classPerson{constructor(name){this.name=name;}init(){console.log('Mynameis',this.name)}}constcreatePerson=newSingleTon(Person);constp1=newcreatePerson('lebron');constp2=newcreatePerson('james');p1.init();//鎴戠殑鍚嶅瓧鏄痩ebronp2.init();//鎴戠殑鍚嶅瓧鏄痩ebronconsole.log(p1===p2)//trueclassTool{constructor(number){this.number=number;}init(){console.log('杩欐槸宸ュ叿',this.number)}}constcreateTool=newSingleTon(Tool);constt1=newcreateTool(1);constt2=newcreateTool(2);t1銆傚湪閲岄潰锛堬級;//杩欐槸宸ュ叿1t2.init();//杩欐槸宸ュ叿1console.log(t1===t2);//鐪熷崟渚嬫ā寮忕殑搴旂敤鍦烘櫙鐧诲綍绐楀彛鐧诲綍绐楀彛鍦ㄦ垜浠殑杞欢涓緢甯歌锛屼篃寰堥€傚悎鐢ㄥ崟渚嬫ā寮忓垱寤猴紙鍏ㄥ眬鍞竴锛岀粡甯镐娇鐢級鐢ㄥ崟渚嬫ā寮忓垱寤猴紝閬垮厤澶氳妭鐐瑰垱寤哄拰閿€姣佺被鐧诲綍{constructor(){this.element=document.createElement('div');this.element.innerHTML=`username
