转:JS中OOP的写法【2】-继承

继承:继承提供了类级别代码复用, 通过继承获得基类的数据, 使得你有能力在已有代码基础上开发而不是从头再写一遍或者copy。我的理解是抽象出的事物本来就是应该互相有联系的,我们可以类来描述抽象的事物,用对象来描述具象的事物,但是这些都是独立的,这就不符合现实的逻辑,所以我们需要继承,让事物之间的联系得到描述。简单的例子:制造液晶显示器的人,一开始并不是直接制造出液晶显示器,而是先造球面的,后来才演变发展为液晶显示器,他们都有显示画面的作用都有电源开关,可能内部构造不太一样,但是还是继承了大部分的属性。
在JS里继承让我们可以将代码写的很优雅,而不是独立的每个FUNCTION去描述,看下面的代码:

/*oop中的继承在javascript中的应用
	man类为本演示的基本类
	具有姓名、年龄、职业三个属性
  */
  var man = function(){
	/*定义私有变量*/
	var name = "张三";/*默认nane值*/
	var age = 25; /*默认age值*/
	var business = "web bulider";/*默认职业值*/
	/*获得name方法*/
	this.getname = function(){
		return name;
	};
	/*name赋值方法*/
	this.setname = function(mingzi){
		name = mingzi;
	};
	/*获得age方法*/
	this.getage = function(){
		return age;
	};
	/*age赋值方法*/
	this.setage= function(nianling){
		age = nianling;
	};
	/*获得business方法*/
	this.getbusiness = function(){
		return business;
	};
	/*business赋值方法*/
	this.setbusiness= function(zhiye){
		business = zhiye;
	};
  }
 
  /*
	manjob类,本演示的子类
	将继承基类的性质
  */
  var manjob = function(){
	/*定义私有变量*/
	var page = "3个";/*做了多少个页面*/
	var js = "10个"; /*做了多少个JS*/
	var flash = "100个";/*做了多少个flash*/
	var feel = "bad"; /*感觉如何*/
	/*获得page方法*/
	this.getpage = function(){
		return page;
	};
	/*page赋值方法*/
	this.setpage = function(yemian){
		page = yemian;
	};
	/*获得js方法*/
	this.getjs = function(){
		return js;
	};
	/*js赋值方法*/
	this.setjs = function(jiaoben){
		js = jiaoben;
	};
	/*获得flash方法*/
	this.getflash = function(){
		return flash;
	};
	/*flash赋值方法*/
	this.setflash = function(donghua){
		flash = donghua;
	};
	/*获得feel方法*/
	this.getfeel = function(){
		return "心情很"+feel;
	};
	/*feel赋值方法*/
	this.setfeel = function(xinqing){
		feel = xinqing;
	};
  }
  /*
	继承开始,用manjob的prototype方式呼叫
	man类,继承man类的属性和方法
  */
  manjob.prototype = new man();
 
  /*实例化*/
  var mydate = new Date();
  var tomie = new manjob();//实例化一个manjob
  /*赋值*/
  tomie.setname("tomie");/*基类*/
  tomie.setage(25);/*基类*/
  tomie.setbusiness("前端开发");/*基类*/
  tomie.setpage("20个");/*子类*/
  tomie.setjs("200个");/*子类*/
  tomie.setflash("10个");/*子类*/
  tomie.setfeel("happy");/*子类*/
  /*打印结果*/
   alert("继承后返回的方法为:"+tomie.getname + tomie.getage + tomie.getbusiness + tomie.getpage + tomie.getjs + tomie.getflash + tomie.getfeel)
  alert(tomie.getname() +"年龄为"+ tomie.getage() +"岁,职业为"+ tomie.getbusiness() +",于"+(mydate.getMonth()+1)+"月完成了页面"+ tomie.getpage() +",脚本"+ tomie.getjs() +",动画"+ tomie.getflash() +","+ tomie.getfeel())

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值