javascript 封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承,利用道格拉斯的动态原型模式和js的闭包特性,缺点是不能使用strict mode。
<html>
<head><title>javascript 封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承</title>
</head>
<body>
javascript 封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承,
利用道格拉斯的动态原型模式和js的闭包特性,缺点是不能使用strict mode。
<script>
function Fun(name,age){
//note:不能使用strict mode
var thisClass = arguments.callee;
var _self = this;
//私有属性
var siyou = "我是私有属性";
//共有属性
this.name = name;
this.age = age;
//私有方法
function service(p){
//to do something use private:siyou
return siyou + "-" + p;
}
//特权方法(各个对象特有的)
this.someMethod = function(){
//Ignore.
};
//原型对象
if(typeof this.getOne != "function"){
thisClass.prototype.getOne = function(p){
//调用私有方法
document.write(service(p) + "<br/>");
//调用静态方法
document.write(thisClass.staticMd() + "<br/>");
return this.name + " : " + this.age;
};
}
//静态成员
if(!thisClass.staticMd){
thisClass.staticMd = function(){
return "我是静态方法";
};
}
}
var a = new Fun("licheng",11);
var b = new Fun("xiaofei",22);
alert(a.getOne("a"));
alert(b.getOne("b"));
</script>
</body>
</html>