<script> var DED = function() { var pvar=3; function private_method() { // do stuff here pvar = 5; } return { method_1 : function() { // do stuff here private_method(); alert(pvar); pvar = 6; }, method_2 : function() { // do stuff here alert(pvar); } }; }(); DED.method_1(); DED.method_2(); </script>
精简后的代码就是
var DED = ( function(){ return {} ; }() );
说明它返回的是对象,并不是函数 所以楼上的应该漏看了那个括号
DED; //是对象并不是函数
复制对象的话 可以采用以下的代码
function object(o) { function F() {} F.prototype = o; return new F(); } var DED1 = object(DED); var DED2 = object(DED); DED1.method_1();
当然也可以采用拷贝属性的方式
//至于这种方式 因为JavaScript是引用传递 所以会造成原有的函数也会被修改 var DED1 = DED; DED1.method_1 = function(){alert("34535");}; DED.method_1();
var a = new DED(), b = new DED(); a.method_1(); b.method_1();
本身就是一个单体,如何克隆?pvar永远指向DED的内部