<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>無標題文檔</title>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript">
var page={};
$(document).ready(function(){
//alert(typeof page);
});
function MyClass (name){
//Dynamic Propertie
this.Name=name;
//dynamic function
this.showName=function(){
document.write(name+"<br />");
};
}
MyClass.staticName="靜態成員";
//靜態方法
MyClass.staticFun=function(name){
document.write(" 靜態方法傳回值: "+name +"<br />"+"staticName:"+MyClass.staticName);
};
//當函數a的內建函式b被函數a外的一個變數引用的時候,就建立了一個閉包。
///////////////////////////closure閉包//////////////////////////////////////
var testCls=function(arg1){
//對象內部公有變數,不允許外部存取
var a=arg1;
var b=10;
var alertB=function(){
alert(b);
}
//外部可訪問地區
return {
c:5,
setA:function(v){
a=v;
},
alertA:function(){
alert(a);
},
alertB:function(){
alertB();
}
}
};
var test=new testCls(4);
/*
test.setA(6);
test.alertA();
test.alertB();
//alert(test.a); //undefined,具有較好的封閉性
alert(test.c); //5
*/
///////////////////////////////////////////////////////////////////////////////////
//另外,還有一種格式頗受爭議:
//(function(a,b){...})(a,b);
(function MyClass2(a,b){
this.MyVar="我的變數";
alert(a+b+this.MyVar);
})(1,2);
</script>
</head>
<script type="text/javascript">
var mc=new MyClass("吳xx");
mc.showName();
//靜態方法只能用類引用,不能 mc.staticFun("靜態參數!");
MyClass.staticFun("靜態參數!");
</script>
<body>
</body>
</html>