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 valueOf 使用方法
Dec 28 Javascript
javascript oop开发滑动(slide)菜单控件
Aug 25 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
Nov 17 Javascript
js转义字符介绍
Nov 05 Javascript
JavaScript中对象property的读取和写入方法介绍
Dec 30 Javascript
jQuery实现手机版页面翻页效果的简单实例
Oct 05 Javascript
flexslider.js实现移动端轮播
Feb 05 Javascript
Javascript 链式作用域详细介绍
Feb 23 Javascript
vue 粒子特效的示例代码
Sep 19 Javascript
微信小程序module.exports模块化操作实例浅析
Dec 20 Javascript
用原生 JS 实现 innerHTML 功能实例详解
Apr 03 Javascript
javascript数据类型中的一些小知识点(推荐)
Apr 18 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
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php字符串函数学习之substr()
2015/03/27 PHP
php实现36进制与10进制转换功能示例
2017/01/10 PHP
Laravel基础-关于引入公共文件的两种方式
2019/10/18 PHP
js 通用javascript函数库整理
2011/08/14 Javascript
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
javascript实现禁止复制网页内容
2014/12/16 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
原生JavaScript实现的简单省市县三级联动功能示例
2017/05/27 Javascript
详解vue express启动数据服务
2017/07/05 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
解决vue.js 数据渲染成功仍报错的问题
2018/08/25 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
python中django框架通过正则搜索页面上email地址的方法
2015/03/21 Python
python实现学生信息管理系统
2020/04/05 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
py-charm延长试用期限实例
2019/12/22 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
Python使用内置函数setattr设置对象的属性值
2020/10/16 Python
Python实现简单的2048小游戏
2021/03/01 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
葡萄牙鞋子品牌:Fair
2016/12/10 全球购物
Kate Spade美国官网:纽约新兴时尚品牌,以包包闻名于世
2017/11/09 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
音乐专业自荐信
2014/02/07 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
运动会3000米加油稿
2015/07/21 职场文书
辞职离别感言
2015/08/04 职场文书
认识实习感想
2015/08/10 职场文书
创业计划书之服装
2019/10/07 职场文书
JavaScript实现队列结构过程
2021/12/06 Javascript
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis