失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > Javascript 面向对象 继承_js面向对象

Javascript 面向对象 继承_js面向对象

时间:2021-10-09 00:09:19

相关推荐

Javascript 面向对象 继承_js面向对象

web前端|js教程

面向对象,继承

web前端-js教程

在JavaScript中实现继承可以有多种方法,下面说两种常见的。

额外css源码大全,vscode括号不匹配,进ubuntu 黑屏,tomcat下php项目,office 爬虫,apache发布php,网站SEO求职信,电影网站模板源码,动态微相册模板lzw

一,call 继承,先看代码:

先定义一个“人”类

安卓有关数字游戏的源码,ubuntu能用来干嘛,tomcat8.0还能使用吗,爬虫图片批量下载,小程序后端为什么用php,seo竞价流量lzw

//人类

Person=function(){

this.name="草泥马";

this.eat=function(){

alert("我要吃饭");

}

this.sleep=function(){

alert("我要睡觉");

}

}

再定义一个学生类,让它继承于Person

任务悬赏源码,vscode活动栏不见,自己装ubuntu,修改tomcat单据号,pymongo爬虫,mysqlnd php7,东台seo优化网络推广,discu门户网站,discuz类的网站模板lzw

//学生类

Student=function(){

Person.call(this);//继承Person类

this.doHomework=function(){

alert("老师来了,作业借我抄下");

}

}

关键看 Person.call(this)这句,其中this代表当前对象,即Student ,这很容易理解,而Person.call(this)的意思是:将Person类的所有的公开成员“附加”给Student类,让Student也具有了Person的所有功能。

和高级语言一样,如果子类中出现了和父类中同名的成员,则会将其覆盖,也就是所谓的“重写”了。

同样的,我们再定义一个女孩类 :

//女孩类

Girl=function(){

Person.call(this);//继承Person类

this.sex="女";

}

JavaScript是可以实现多重继承的,请看下面的Master(硕士)类,这个Master 自然是个学生,但同时又是个漂亮MM,于是有了下面的代码:

//硕士类

Master=function(){

Student.call(this);//继承Student类

Girl.call(this);//继承Girl类

this.degree="硕士";//学历

}

我们可以测试一下:

var master=new Master();

master.name="凤姐";

master.eat();

master.doHomework();

alert("偶是名字叫:"+master.name);

alert("偶的性别是:"+master.sex);

多重继承时要注意顺序,如果两个类中有相同名称的成员,那么后一个将覆盖前一个,也就是说当前类只会继承后一个类中的成员。

call 方法继承就说到这,如果大家对call方法不清楚,就请去问问谷歌兄,我就不赘述了,网上转载得不要太多。下面说下另外一种继承方式。

二,prototype 原型继承:

我们再定义一个班长类:

//班长类

SquadLeader=function (){

//打招呼

this.hi=function(){

alert("同学们好,我现在是班长了");

}

}

上面定义了一个硕士类,现在这个硕士被提升为班长了,所以这个Master要继承SquadLeader了,这次我们用prototype 来实现,请看下面代码:

Master.prototype=new SquadLeader();//prototype 属性指向一个对象

//或者

//Master.prototype=SquadLeader.prototype;

这样Master就继承了SquadLeader类,就这么一句话,这里有两种形式,其实原理是一样的。意思是:将SquadLeader的“灵魂”拷贝给了Master,于是从此SquadLeader能做的事,Master都可以做了。

测试一下:

var master=new Master();

master.hi()//输出“同学们好,我现在是班长了”

我个人比较喜欢用第一种方案(call 继承)来实现继承,所有代码都包在一个“{}”内,一目了然,在书写风格上较之于第二种更接近于C#。prototype 属性我一般用来对已有的类做扩展。

JavaScript是门非常灵活的语言,实现继承可能还有其他更好的方式,大家可以去研究挖掘,我在这就当是抛了块砖头, 希望能引出华美的玉石!

如果觉得《Javascript 面向对象 继承_js面向对象》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。