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

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>


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值