面向对象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>