面向对象js javascript


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

 

posted @ 2010-07-27 10:30  庚武  Views(228)  Comments(0Edit  收藏  举报