JavaScript_12設計模式(單體模式【五、六】)惰性單體和分支單體
阿新 • • 發佈:2018-11-20
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>New Web Project</title> <script type="text/javascript" charset="UTF-8"> //惰性單體(和閉包單體有一些相似的地方) /* //名稱空間 var Ext={}; Ext.Base=(function(){ //私有變數,控制返回單體物件。 var uniqInstance;//返回undifind //需要一個構造器,init 初始化單體物件的方法。 function init(){ //私有成員變數 var a1=10; var a2=true; var fn1=function(){alert('fn1')}; var fn2=function(){alert('fn2')}; return{ attr1:a1, attr2:a2, method1:function(){ return fn1(); }, method2:function(){ return fn2(); } }; } return{ getInstance:function(){ if(!uniqInstance){//如果不存在,建立單體實列。 uniqInstance=init(); } return uniqInstance; } }; })(); alert(Ext.Base.getInstance().attr1); Ext.Base.getInstance().method1(); */ //分支單體(判斷程式的分支<瀏覽器差異檢測 >) var Ext={}; // var def=true; //FE var def=false;//IE Ext.More=(function(){ var objA={//提供火狐瀏覽器內部的一些配置 attr1:"FE屬性1" //屬性1 //屬性2 //方法1 //方法2 }; var objB={//提供IE瀏覽器內部的一些配置 attr1:"IF屬性2" //屬性1 //屬性2 //方法1 //方法2 }; return(def) ?objA:objB; })(); alert(Ext.More.attr1); </script> </head> <body> <h1>New Web Project Page</h1> </body>