php面向对象继承概念分析,JavaScript 继承使用分析_js面向对象

深入学习javascript继承之前,先了解下面的几个概念:

父类:被继承的类

子类:由继承得来的类

超类:也就是父类

抽象类:一般不用来实例化的类,它的用途是用来给其他类继承.

基类:提供给其他类可以继承的类

派生类:由基类继承而来的类

javascript对象继承通常有下面的5种方式:

1.对象冒充

2.call()方式

3.apply()方式

4.原型链

5.混合方式

A.对象冒充

所谓对象冒充,就是新的类冒充旧的类(旧的类必须采用构造函数方式),从而达到继承目的.

eg.1

function people(name,sex,age){ //使用构造函数方式

this.name=name;

this.sex=sex;

this.age=age;

this.say=function(){

alert("My name is "+this.name);

};

this.doing=function(){

alert("I am speaking");

};

}

var Marry=new people("Marry","Woman","23");

Marry.say();

Marry.doing();

function white_people(name,sex,age){

this.inherit=people;

this.inherit(name,sex,age);

delete this.inherit;

this.area=function(){

alert("I am in Europe");

}

}

var Tom=new white_people("Tom","man","21");

Tom.say();

Tom.area();

alert(Tom.age);

上面的例子中,people是用来做white_people的基类,记住这个格式是用来对象冒充达到继承目的的

this.inherit=people; //冒充

this.inherit(name,sex,age); //继承

delete this.inherit; //删除继承

所有新属性和新方法都必须再删除了继承后定义,这样是为了避免覆盖父类的相关属性和方法.

另外,对象冒充支持多继承.

eg.2

function worker(pay,work){

this.pay=pay;

this.work=work;

}

function city_worker(name,sex,age,pay,work){

this.inherit=people;

this.inherit(name,sex,age);

delete this.inherit;

this.inherit=worker;

this.inherit(pay,work);

delete this.inherit;

}

var Jerry=new city_worker("Jerry","man","21","$1000","coder");

Jerry.say();

alert(Jerry.work);

对象冒充有一个不足的地方:多继承机制实现时,如果基类存在相同的属性或者方法,将从后面的类继承.

B.call()方式

只是封装的对象冒充的一个函数.这样,我们不再需要写"经典"的三句话,而是用下面这句话代替:

基类.call(对象,参数列表)

eg.1

function farmer(name,sex,age,pay,work){

people.call(this,name,sex,age);

worker.call(this,pay,work);

}

var Nicholas=new farmer("Nicholas","man","27","$3000","irrigator");

Nicholas.say();

alert(Nicholas.pay);

同样,call()存在同名属性和方法的小问题.

C.apply()方式

和call()一样.apply()也是对象冒充的一个封装函数.其格式为:

基类.apply(对象,参数数组);

eg.1

function white_collar(name,sex,age,pay,work){

people.apply(this,new Array(name,sex,age));

worker.apply(this,[pay,work]);

}

var Jiessie=new white_collar("Jiessie","woman","26","$2500","editor");

Jiessie.say();

alert(Jiessie.work);

同样,apply()存在同名属性和方法的小问题.

D.原型链

上面三种方式都是采用构造函数方式的继承,对应地,也具有原型函数方式的继承:原型链.

eg.1

function blue_collar(){

}

blue_collar.prototype.name="Jean";

blue_collar.prototype.age="33";

blue_collar.prototype.say=function(){

alert("my name is "+ this.name);

};

function city_blue_collar(){

}

city_blue_collar.prototype=new blue_collar();

var jj=new city_blue_collar;

jj.say();

原型链也具有了原型链的缺点:不能传递参数.另外,原型链不支持多继承,因为

E.混合方式

使用构造函数方式来写类的属性,对属性的继承采用call()或者apply()

使用原型方式来写的方法,对方法的继承采用原型链

eg.1

function beauty(name,age){

this.name=name;

this.age=age;

}

beauty.prototype.say=function(){

alert("小女叫"+this.name);

};

function china_beauty(name,age,area){

beauty.call(this,name,age);

this.area=area;

}

china_beauty.prototype=new beauty();

china_beauty.prototype.from=function(){

alert("我来自"+this.area);

};

var diaochan=new china_beauty("貂禅","16","临洮");

diaochan.say();

diaochan.from();

alert(diaochan.age);

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
毕业设计,基于SpringBoot+Vue+MySQL开发的体育馆管理系统,源码+数据库+毕业论文+视频演示 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此体育馆管理系统利用当下成熟完善的SpringBoot框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线选择试题并完成答题,在线查看考核分数。管理员管理收货地址管理、购物车管理、场地管理、场地订单管理、字典管理、赛事管理、赛事收藏管理、赛事评价管理、赛事订单管理、商品管理、商品收藏管理、商品评价管理、商品订单管理、用户管理、管理员管理等功能。体育馆管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:体育馆管理系统;SpringBoot框架;Mysql;自动化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值