js常用的继承--组合式继承

 更新时间:2017年03月06日 17:02:57   作者:fantasy525  
本篇文章主要介绍了js常用的继承--组合式继承的相关知识,具有很好的参考价值。下面跟着小编一起来看下吧

组合继承有时候也叫伪经典继承,指的是将原型链和借用构造函数技术组合到一块,从而发挥二者之长的一种继承模式,其背后的思路是使用原型链实现对原型属性和方法的继承,而通过借用构造函数来实现对实例属性的继承。这样既通过在原型上定义方法实现了函数复用,又能保证每个实例都有它的自己的属性。

 function SuperType(name){
  this.name=name;
  this.colors=["red","blue","green"];
 }
 SuperType.prototype.sayName=function(){
  console.log(this.name);
 }
 function SubType(name,age){
  SuperType.call(this,name);
  this.age=age;
 }
 SubType.prototype=new SuperType();
 SubType.prototype.constructor=SubType;
 SubType.prototype.sayAge=function(){
  console.log(this.age);
 }
 var instance1=new SubType("zxf",24);
 instance1.colors.push("black");
 console.log(instance1.colors);//["red","blue","green","black"]
 instance1.sayName();//"zxf"
 instance1.sayAge();//24
 var instance2=new SubType("jay",36);
 console.log(instance2.colors);//["red","blue","green"]
 instance2.sayName();//"jay"
 instance2.sayAge();//36

在这个例子中,supertype构造函数定义了两个属性,name和colors。supertype的原型定义了一个方法sayname()。subtype构造函数调用supertype时传入了name参数,紧接着又定义了它自己的属性age。然后将supertype的实例赋值给subtype的原型,然后又在该新原型上定义了方法sayage()。这样一来,就可以让两个不同的subtype实例既可以拥有属性--包括colors属性,又可以使用相同的方法。

组合式继承缺点是:调用了两次supertype构造函数,一次在赋值subtype的原型时,一次在实例化子类时call调用,这次调用会屏蔽原型中的两个同名属性。

参考书籍:Javascript高级程序设计(第3版);

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • echarts图表无数据/空数据如何展示"暂无数据"

    echarts图表无数据/空数据如何展示"暂无数据"

    在开发echarts的时候我们不得不考虑数据为空的情况,其实有很多种解决办法,下面这篇文章主要给大家介绍了关于echarts图表无数据/空数据如何展示“暂无数据”的相关资料,需要的朋友可以参考下
    2022-10-10
  • JavaScript高级程序设计 DOM学习笔记

    JavaScript高级程序设计 DOM学习笔记

    DOM是针对XML和HTML文档的一个API:即规定了实现文本节点操控的属性、方法,具体实现由各自浏览器实现。
    2011-09-09
  • js实现贪吃蛇小游戏(容易理解)

    js实现贪吃蛇小游戏(容易理解)

    本文主要介绍了js实现贪吃蛇小游戏的步骤与方法,代码简单,容易理解。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • Bootstrap Table 双击、单击行获取该行及全表内容

    Bootstrap Table 双击、单击行获取该行及全表内容

    这篇文章主要介绍了Bootstrap Table 双击、单击行获取该行内容及获取全表的内容,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-08-08
  • JavaScript实现简单日期特效

    JavaScript实现简单日期特效

    这篇文章主要为大家详细介绍了JavaScript实现简单日期特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • Bootstrap CSS组件之按钮组(btn-group)

    Bootstrap CSS组件之按钮组(btn-group)

    这篇文章主要为大家详细介绍了Bootstrap CSS组件之按钮组(btn-group),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • JS验证IP,子网掩码,网关和MAC的方法

    JS验证IP,子网掩码,网关和MAC的方法

    这篇文章主要介绍了JS验证IP,子网掩码,网关和MAC的方法,涉及javascript正则表达式的相关使用技巧,需要的朋友可以参考下
    2015-07-07
  • JavaScript使用箭头函数实现优化代码

    JavaScript使用箭头函数实现优化代码

    在JavaScript的编程世界里,我们时常被普通函数的冗长写法所困扰,每次都需要写function关键字,有时候还要明确地写return语句,下面我们就来看看如何利用箭头函数优化这些繁琐的代码吧
    2023-11-11
  • JS绘图Flot应用图形绘制异常解决方案

    JS绘图Flot应用图形绘制异常解决方案

    这篇文章主要介绍了JS绘图Flot应用图形绘制异常解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 浅谈JS包装对象

    浅谈JS包装对象

    这篇文章主要介绍了浅谈JS包装对象,对包装对象感兴趣的同学,一定要详细看一下
    2021-04-04

最新评论