Javascript编程之继承实例汇总


Posted in Javascript onNovember 28, 2015

本文实例讲述了Javascript编程之继承。分享给大家供大家参考,具体如下:

这篇文字是在看完《Javascript 王者归来》后的整理总结,文章详细章节在 第21章 P537

继承一般要实现以下三层含义:

1)子类实例可以共享父类的方法;
2)子类可以覆盖父类的方法或者扩展新的方法;
3)子类和父类都是子类实例的类型。

一、构造继承法

子类中调用父类的构造函数来维护的,该继承法能实现多重继承,但只能继承父类的共有方法,无法继承静态方法,而且不能用instanceof来验证实例。

function a(){
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  a.apply(this,arguments);
}
a.prototype.fuck=function(){
  alert("%^&%^&%&^%&");
}
var oB=new b();
alert(oB instanceof a);// false
oB.say();       // happy new year
oB.fuck();       // 读不到

二、原型继承法/经典继承法

该继承法是通过复制已经存在的原型对象来实现行为重用,让对象实例共享原型对象的属性。支持多重继承,继承原型静态方法,能用instanceof来验证实例。

function a(){
 this.say=function(){
 alert("happy new year!");
 }
}
function b(){}
a.prototype.fuck=function(){
  alert("%^&%^&%&^%&");
}
a.prototype.z=123;
b.prototype=new a();
var oB=new b();
alert(oB instanceof a); // true
alert(oB.z);      // 123
oB.say();        // happy new year
oB.fuck();       // %^&%^&%&^%&

三、实例继承法/寄生构造函数模式

构造法不能继承类型的静态方法,原型继承得不完善(某些核心对象的不可枚举方法不能继承),而实例继承法能对原生核心对象或者DOM对象进行继承,它通过在类型中构造对象并返回的办法来实现继承,因此instanceof验证会是false,不支持多重继承。

function a(){
 var oA=new Array();
 oA.say=function(){
   alert("hello A!");
 }
 return oA;
}
var obj=new a();
alert(obj instanceof a); // false
obj.say();

四、拷贝继承法

该方法通过拷贝基类对象的所有可枚举属性和方法来模拟继承,因此它可以模拟多继承,但不能枚举的就无法继承;它可以继承父类的静态方法;

function a(){
  this.num=123;
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  this.extends=function(obj){
    for(each in obj){
      this[each]=obj[each];
    }
  }
}
var oB=new b();
oB.extends(new a());
alert(oB instanceof a); // false
alert(oB.num);     // 123
oB.say();        // happy new year

五、混合继承法

顾名思义就是把上面几种继承法综合起来,取长补短,让继承更完善。常见的有 构造+原型继承:伪经典继承

function a(){
  this.num=123;
  this.say=function(){
  alert("happy new year!");
  }
}
function b(){
  a.apply(this);
}
b.prototype=new a();
b.prototype.z=123;
var oB=new b();
alert(oB instanceof a); // true
alert(oB.num);     // 123
oB.say();        // happy new year

六、各种继承法的优缺点

Javascript编程之继承实例汇总

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
javascript 文件的同步加载与异步加载实现原理
Dec 13 Javascript
jquery中EasyUI实现异步树
Mar 01 Javascript
jQuery仿gmail实现fixed布局的方法
May 27 Javascript
ECMAScript6函数默认参数
Jun 12 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
jQuery图片旋转插件jQueryRotate.js用法实例(附demo下载)
Jan 21 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
vue将时间戳转换成自定义时间格式的方法
Mar 02 Javascript
一个Vue页面的内存泄露分析详解
Jun 25 Javascript
Vue实现移动端左右滑动效果的方法
Nov 27 Javascript
原生JS实现弹幕效果的简单操作指南
Nov 10 Javascript
JS创建或填充任意长度数组的小技巧汇总
Oct 24 Javascript
Javascript编程中几种继承方式比较分析
Nov 28 #Javascript
详解JavaScript的变量和数据类型
Nov 27 #Javascript
详解基于Bootstrap扁平化的后台框架Ace
Nov 27 #Javascript
Bootstrap精简教程
Nov 27 #Javascript
Bootstrap每天必学之标签与徽章
Nov 27 #Javascript
Bootstrap每天必学之导航条
Nov 27 #Javascript
javascript设计模式--策略模式之输入验证
Nov 27 #Javascript
You might like
php 获取今日、昨日、上周、本月的起始时间戳和结束时间戳的方法
2013/09/28 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
jquery 插件学习(三)
2012/08/06 Javascript
jQuery实现动画效果circle实例
2015/08/06 Javascript
js jquery获取当前元素的兄弟级 上一个 下一个元素
2015/09/01 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
详解Node.Js如何处理post数据
2016/09/19 Javascript
vue.js组件vue-waterfall-easy实现瀑布流效果
2017/08/22 Javascript
深入理解Vue生命周期、手动挂载及挂载子组件
2017/09/27 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
vue的$http的get请求要加上params操作
2020/11/12 Javascript
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Python中matplotlib中文乱码解决办法
2017/05/12 Python
python模块之paramiko实例代码
2018/01/31 Python
pandas groupby 分组取每组的前几行记录方法
2018/04/20 Python
python3通过selenium爬虫获取到dj商品的实例代码
2019/04/25 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
Python数学形态学实例分析
2019/09/06 Python
如何用 Python 处理不平衡数据集
2021/01/04 Python
Python try except finally资源回收的实现
2021/01/25 Python
HTML5进度条特效
2014/12/18 HTML / CSS
美国全球旅游运营商:Pacific Holidays
2018/06/18 全球购物
聚美优品陈欧广告词
2014/03/14 职场文书
2014年综治维稳工作总结
2014/11/17 职场文书
小学语文教师年度考核个人总结
2015/02/05 职场文书
小学班主任个人总结
2015/03/03 职场文书
幼师求职自荐信
2015/03/26 职场文书
母亲去世追悼词
2015/06/23 职场文书
初中班级口号霸气押韵
2015/12/24 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
开发微信小程序之WXSS样式教程
2022/04/18 HTML / CSS