您的位置:首页 > Web前端 > JavaScript

javascript封装类的技巧:具有私有成员、私有方法、特权属性、特权方法、原型对象、静态成员,最重要的是不会失去封装的优点,并且不影响继承

2014-11-12 17:35 916 查看
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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐