1. 程式人生 > >js之 單例模式

js之 單例模式

new message charset 業務邏輯 包含 render bin init ()

  1 <!DOCTYPE html>
  2 <html lang="en">
  3 <head>
  4     <meta charset="UTF-8">
  5     <title>Document</title>
  6 </head>
  7 <body>
  8 <script>
  9 // 1 ,獨立的對象  比如 一個是xiaowang  和一個xiaoli
 10 // 2,小李跟小王通過門鈴進行通信
 11 // 3,先看小王家有沒有門,如果有 直接通過門鈴通訊 didi 沒有的話 建門
12 // 4,單例之間進行通信 13 // \ 14 // 15 // 以下這種單例是需要用到的時候 才去New一個對象 平時開發裏 不是這樣寫 16 var xiaowang = (function(argument){ 17 var xiaowangjia = function(message){ 18 //建門 19 this.menling = message; 20 } 21 var men; 22 var info = { 23 //info是包含對外的東西 24
sendMessage:function(message){ 25 //這是info裏面其中一個方法,接受信息 26 if (!men) { 27 men = new xiaowangjia(message); 28 }; 29 return men; 30 } 31 }; 32 return info; 33 })(); 34 var xiaoli = { 35 callXiaowang:function
(mes){ 36 //小王家有一個送消息的方法 37 var _xw=xiaowang.sendMessage(mes); 38 alert(_xw.menling); 39 //xiaowang采用閉包 ;此時xiaowang.sendMessage(message)已經被回收了 相當於_xw = null 40 _xw = null;//加不加這句話都沒事,因為效果都一樣,不加也是自動被垃圾回收機制回收掉 41 } 42 } 43 xiaoli.callXiaowang(didi); 44 45 </script> 46 47 <script> 48 //頁面有6個按鈕 a b c d e f 49 // a b c => top 50 // d e f =>bannerbta 51 var top = { 52 init:function(){ 53 // 54 this.render(); 55 this.bind(); 56 }, 57 //要傳遞的a 58 a:4, 59 render:function(){ 60 //放所有dom元素 61 var me = this; 62 me.btna = $(#a); 63 }, 64 bind:function(){ 65 //綁定事件 66 var me = this; 67 me.btna.click(function(){ 68 //業務邏輯取出去 69 me.test(); //此時不能this.test(); 因為此時的this指的是 按鈕 70 }) 71 }, 72 test:function(){ 73 a= 5; 74 } 75 } 76 var banner = { 77 init:function(){ 78 //初始化 79 this.render(); 80 this.bind(); 81 }, 82 a:4, 83 render:function(){ 84 //放所有dom元素 既是綁定dom元素 85 var me = this; 86 me.btna = $(#d); 87 }, 88 bind:function(){ 89 //綁定事件 90 var me = this; 91 me.btna.click(function(){ 92 //業務邏輯取出去 93 me.test(); //此時不能this.test(); 因為此時的this指的是 按鈕 94 }) 95 }, 96 test:function(){ 97 98 //當點擊的時候 99 top.a = 6; 100 } 101 } 102 top.init(); 103 banner.init(); 104 105 106 </script> 107 108 </body> 109 </html>

js之 單例模式