<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>