全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

js继承实现方法详解

本文实例讲述了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小时内与您取得联系。