Javascript对象的继承


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>javascriptInherited.html</title>

<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<script type="text/javascript">
//Javascript对象的继承
//对象冒充
function Car(sColor){
this.sColor = sColor;
this.showColor = function(){
alert(this.sColor);
};
}
//inherit Car
function MyCar(sColor,sMoney){
this.newMethods = Car;
this.newMethods(sColor);
//删除的目地是为了防止重写父类的方法和属性
//但是我试了一下,不删除也基本上可以用,
//也没有发现什么问题
delete this.newMethods;
this.sMoney = sMoney;
this.showMoney = function(){
alert(sMoney);
};
}

//混合方式的继承call(),apply()
function ClassA(sColor){
this.sColor = sColor;
}

ClassA.prototype.showColor = function(){
alert(this.sColor);
};

//inherit
function ClassB(sColor,fMoney){
//三种继承的方法,第三种是传所有的参数arguments
ClassA.call(this,sColor);
//ClassA.apply(this,new Array(sColor));
//ClassA.apply(this,arguments);
this.fMoney = fMoney;
}

ClassB.prototype = new ClassA();
ClassB.prototype.showMoney = function(){
alert(this.sColor+" "+this.fMoney);
};

//动态原型的继承方式
function ClassF(sColor){
this.sColor = sColor;
if(typeof ClassF._init == "undefined"){
ClassF.prototype.showColor = function(){
alert(this.sColor);
};
ClassF._init = true;
}
}
//Inherit ClassF
function ClassS(sColor,iMoney){
ClassF.apply(this,arguments);
this.iMoney = iMoney;
if(typeof ClassS._inits == "undefined"){
ClassS.prototype.showMoney = function(){
alert(this.sColor+" "+this.iMoney);
};
ClassS._inits = true;
}
}
//好像必须得写成这样,不然的话就会报错
ClassS.prototype = new ClassF();

window.onload = function(){
//对象冒充
//var mycar = new MyCar("red",50);
//mycar.showMoney();
//mycar.showColor();
//var myclass = new ClassB("red",20);
//myclass.showColor();
//myclass.showMoney();
var autoClass = new ClassS("blue",3000);
autoClass.showMoney();
autoClass.showColor();
}
</script>
<body>
</body>
</html>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值