<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>Insert title here</title>
</head>
<body>
<script type="text/javascript">
//类
function JsClassChild() {
this.child = function () {
return "JsClassChild.child";
}
};
//定义一个javascript类 --------这里要求成员属性和方法必须使用this来引用---
function JsClass(privateParam, publicParam) {//构造函数
var priMember = privateParam; //私有变量
this.pubMember = publicParam; //公共变量
// 定义私有方法
function priMethod() {
return "priMethod()";
}
// 定义特权方法
this.pubMethod1 = function () {
//both(); //这种公用方法可以调用私有方法和属性
return "pubMethod1()";
}
// 定义特权方法
//特权方法可以访问所有成员
this.privilegedMethod = function () {
alert("privilegedMethod");
var str = "这是特权方法,我调用了\n";
str += " 私有变量:" + priMember + "\n";
str += " 私有方法:" + priMethod() + "\n";
str += " 公共变量:" + this.pubMember + "\n";
str += " 公共方法:" + this.pubMethod();
alert(str);
}
this.child = function () {
return "JsClass.child";
}
}
JsClass.prototype.pub = function () {
return "JsClass.prototype.pub";
}
//类
function JsClassChild2() {
//继承两个类JsClass JsClassChild
JsClass.call(this, " 3zfp ", 100);
JsClassChild.call(this);
};
// 使用 JsClass的实例
JsClassChild.prototype = new JsClass(" 3zfp ", 100);
JsClassChild2.prototype = new JsClassChild();
var instance = new JsClassChild2();
//instance.privilegedMethod();
alert(instance.pubMember); //弹出pubMember信息 100
alert(instance.pubMethod1()); //pubMethod1
alert(instance.pub()); //JsClassChild.pub
alert(instance.child()); //JsClassChild.pub 此时会屏蔽掉 JsClass.child(原因是JsClassChild.call(this);在 JsClass.call(this, " 3zfp ", 100);的后面)
</script>
</body>
</html>