本文实例讲述了js继承实现方法。分享给大家供大家参考,具体如下:
var animal=function(name){ //构造函数
this.name=name;
this.sayhello=function(){
alert("hi我是"+this.name);
};
}
animal.prototype.shout=function(){ //prototype主要作用:给类增加一个新的属性或函数
alert(this.name+"正在叫!");
};
animal.prototype.game=function(){
alert(this.name+"正在玩耍!");
};
var dog=new animal("小黑"); //实例化
dog.sayhello();
dog.shout();
dog.game();
一、原型继承
var animal=function(name){
this.name=name;
this.sayhello=function(){
alert("hi我是"+this.name);
};
}
animal.prototype.shout=function(){
alert(this.name+"正在叫!");
};
animal.prototype.game=function(){
alert(this.name+"正在玩耍!");
};
var Dog=function(name){
this.name=name;
this.shout=function(){ //重写父类的函数
alert(this.name+"汪汪叫!");
}
}
Dog.prototype=Cat.prototype=new animal();
var dog=new Dog("小黑");
dog.sayhello();
dog.shout();
dog.game();
var cat=new Cat("小白");
cat.sayhello();
cat.shout();
cat.game();
animal是父类(或超类),要继承于谁,谁就是父类(超类)
改进:专门写个函数,用来实现继承
var animal=function(name){
this.name=name;
this.sayhello=function(){
alert("hi我是"+this.name);
};
}
Function.prototype.extends=function(superclass){ //extends是保留关键字,不能拿出来单独使用,如var extends=function(){},而这里可以使用是因为他做为函数的属性添加上去
this.prototype=new superclass();
};
animal.prototype.shout=function(){
alert(this.name+"正在叫!");
};
animal.prototype.game=function(){
alert(this.name+"正在玩耍!");
};
var Dog=function(name){
this.name=name;
this.shout=function(){
alert(this.name+"汪汪叫!");
}
}
Dog.extends(animal);
var dog=new Dog("小黑");
dog.sayhello();
dog.shout();
dog.game();
var dog=new Dog("小白");
dog.sayhello();
dog.shout();
dog.game();
二、call,apply继承(不完全继承)
var animal=function(name){
this.name=name;
this.sayhello=function(){
alert("hi我是"+this.name);
};
}
animal.prototype.shout=function(){
alert(this.name+"正在叫!");
};
animal.prototype.game=function(){
alert(this.name+"正在玩耍!");
};
var Dog=function(name){
animal.call(this,name);
}
var dog=new Dog("小黑");
dog.sayhello();
dog.shout();
dog.game();
输出:hi我是小黑
TypeError: dog.shout is not a function
通过call(apply)的方式,只能改变其this指向,通过prototype添加进去的方法,他是无法直接继承的
总结:call,apply这种方式的继承适用于没有prototype的类或者不需要继承prototype所添加属性或函数的类,因为call和apply函数只是实现了方法的替换,而没有对对象的属性和函数进行复制操作
原型继承,则可以继承所有的属性和函数
继承的属性,只有删除原有属性,才会输出继承的属性
更多关于JavaScript相关内容可查看本站专题:《javascript面向对象入门教程》、《JavaScript中json操作技巧总结》、《JavaScript切换特效与技巧总结》、《JavaScript查找算法技巧总结》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# js
# 继承
# javascript中的3种继承实现方法
# JavaScript的9种继承实现方式归纳
# js对象的构造和继承实现代码
# javascript 继承实现方法
# Javascript 继承实现例子
# Javascript 类的继承实现代码
# js的OOP继承实现(必看篇)
# 我是
# 是因为
# 相关内容
# 他是
# 不需要
# 才会
# 遍历
# 适用于
# 数据结构
# 给大家
# 重写
# 可以使用
# 拿出来
# 不完全
# 则可
# 更多关于
# 他做
# 所述
# 程序设计
# 谁就
相关文章:
Android使用GridView实现日历的简单功能
建站之星如何优化SEO以实现高效排名?
建站主机选虚拟主机还是云服务器更好?
Python lxml的etree和ElementTree有什么区别
如何在建站之星网店版论坛获取技术支持?
微网站制作教程,我微信里的网站怎么才能复制到浏览器里?
如何通过云梦建站系统实现SEO快速优化?
如何用西部建站助手快速创建专业网站?
定制建站流程解析:需求评估与SEO优化功能开发指南
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
如何用免费手机建站系统零基础打造专业网站?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何在自有机房高效搭建专业网站?
再谈Python中的字符串与字符编码(推荐)
制作表格网站有哪些,线上表格怎么弄?
想学网站制作怎么学,建立一个网站要花费多少?
北京网站制作的公司有哪些,北京白云观官方网站?
如何在Ubuntu系统下快速搭建WordPress个人网站?
建站之星安装后如何配置SEO及设计样式?
C#怎么使用委托和事件 C# delegate与event编程方法
家庭服务器如何搭建个人网站?
建站之星安装模板失败:服务器环境不兼容?
如何在IIS服务器上快速部署高效网站?
网站微信制作软件,如何制作微信链接?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何在Windows服务器上快速搭建网站?
如何彻底删除建站之星生成的Banner?
,石家庄四十八中学官网?
如何在宝塔面板创建新站点?
娃派WAP自助建站:免费模板+移动优化,快速打造专业网站
建站之星代理如何获取技术支持?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
香港服务器租用费用高吗?如何避免常见误区?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
建站主机是否属于云主机类型?
学校为何禁止电信移动建设网站?
建站10G流量真的够用吗?如何应对访问高峰?
详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)
简单实现Android文件上传
建站之星代理平台如何选择最佳方案?
Swift开发中switch语句值绑定模式
如何配置WinSCP新建站点的密钥验证步骤?
建站之星如何快速生成多端适配网站?
新网站制作渠道有哪些,跪求一个无线渠道比较强的小说网站,我要发表小说?
香港服务器网站卡顿?如何解决网络延迟与负载问题?
网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?
如何选择靠谱的建站公司加盟品牌?
网站制作难吗安全吗,做一个网站需要多久时间?
如何选择域名并搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。