javascript关于继承解析


Posted in Javascript onMay 10, 2016

上一篇已介绍了组合继承,现在讲讲剩余的几种继承。

原型式继承

调用一个函数,接收这个函数返回来的对象,这个对象的原型就是传入函数的参数对象。

如:

function  personObject(o){
    function F(){}
    F.prototype = o;
    return new F();
}
var person = {
   name:"Nicholas",
   friends:["Shelby","Court","Van"]
}

var person_one = personObject(person);

从上面的代码中,我们知道person是person_one的原型。ES5中添加了一个方法规范化原型式继承,这个方法是Object.create(),这个方法有两个参数,第一个是作为新对象原型的对象,像上面的person,第二个是为新对象定义额外属性的对象。第二个参数可选。

如:

var person_one = Object.create(person, {
        name: {
            value:"Jon"
      }
});

当你只想让一个对象与另一个对象保持类似时,可以使用原型式继承。

寄生式继承   

在一个函数里实现一次原型式继承,然后为接收到的这个对象添加自己的属性与方法。

如:

function createAnother(o){
   var person_one = personObject(o);
   person_one.sayHi = function(){
       alert(" hi ");
   }
   return person_one;
}

寄生组合式继承

组合继承也有其缺点,它实现了两次属性继承,而寄生组合式继承就避免了这个问题。实例通过构造函数继承了属性,而原型的方法则是通过寄生式继承的方式来继承。

如:

function inherit(subType, superType){
   var prototype = Object(superType.prototype);
   prototype.constructor = subType;
   subType.prototype = prototype;
}

通过调用上面的函数,实现subTye.prototype的原型是superType.prototype,完成了原型方法的继承。

以上这篇javascript关于继承解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js动态为代码着色显示行号
May 29 Javascript
JavaScript实现穷举排列(permutation)算法谜题解答
Dec 29 Javascript
jQuery绑定事件-多种实现方式总结
May 09 Javascript
微信端开发--登录小程序步骤
Jan 11 Javascript
BootStrap导航栏问题记录
Jul 31 Javascript
angularjs实现猜数字大小功能
May 20 Javascript
bootstrap-table.js扩展分页工具栏(增加跳转到xx页)功能
Dec 28 Javascript
JavaScript中EventLoop介绍
Jan 22 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
Oct 23 Javascript
vue项目中引入Sass实例方法
Aug 27 Javascript
详解Vue.js 可拖放文本框组件的使用
Mar 03 Vue.js
Vue自定义铃声提示音组件的实现
Jan 22 Vue.js
JavaScript继承学习笔记【新手必看】
May 10 #Javascript
实例讲解使用原生JavaScript处理AJAX请求的方法
May 10 #Javascript
深入剖析JavaScript:Object类型
May 10 #Javascript
JavaScript的React Web库的理念剖析及基础上手指南
May 10 #Javascript
快速解决Canvas.toDataURL 图片跨域的问题
May 10 #Javascript
jQuery事件的绑定、触发、及监听方法简单说明
May 10 #Javascript
网页前端登录js按Enter回车键实现登陆的两种方法
May 10 #Javascript
You might like
关于初学PHP时的知识积累总结
2013/06/07 PHP
ThinkPHP CURD方法之page方法详解
2014/06/18 PHP
PHP封装mysqli基于面向对象的mysql数据库操作类与用法示例
2019/02/25 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
js实现对table动态添加、删除和更新的方法
2015/02/10 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
总结Javascript中的隐式类型转换
2016/08/24 Javascript
KnockoutJS 3.X API 第四章之数据控制流if绑定和ifnot绑定
2016/10/10 Javascript
javascript事件的传播基础实例讲解(35)
2017/02/14 Javascript
js以及jquery实现手风琴效果
2020/04/17 Javascript
javascript 中select框触发事件过程的分析
2017/08/01 Javascript
浅谈Angular4中常用管道
2017/09/27 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
20道JS原理题助你面试一臂之力(必看)
2019/07/22 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 RNG vs Dragon BO3 第一场 1月24日
2021/03/11 DOTA
python获取文件版本信息、公司名和产品名的方法
2014/10/05 Python
Python中的连接符(+、+=)示例详解
2017/01/13 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
Python 转换文本编码实现解析
2019/08/27 Python
Django实现基于类的分页功能
2019/10/31 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
tensorflow之并行读入数据详解
2020/02/05 Python
python numpy生成等差数列、等比数列的实例
2020/02/25 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
如何使用python写截屏小工具
2020/09/29 Python
python 利用panda 实现列联表(交叉表)
2021/02/06 Python
品管员岗位职责
2013/11/10 职场文书
运动会广播稿200字(10篇)
2014/10/12 职场文书
导游词300字
2015/02/13 职场文书
重阳节简报
2015/07/20 职场文书
Go获取两个时区的时间差
2022/04/20 Golang