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代码(如:name,age)
Aug 10 Javascript
extJS中常用的4种Ajax异步提交方式
Mar 07 Javascript
jQuery判断多个input file 都不能为空的例子
Jun 23 Javascript
判断JS对象是否拥有某属性的方法推荐
May 12 Javascript
JavaScript实现刷新不重记的倒计时
Aug 10 Javascript
JS封装通过className获取元素的函数示例
Dec 20 Javascript
详解原生js实现offset方法
Jun 15 Javascript
vue给对象动态添加属性和值的实例
Sep 09 Javascript
jQuery实现鼠标滑动切换图片
May 27 jQuery
微信小程序实现canvas分享朋友圈海报
Jun 21 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
Jul 09 Javascript
Vue项目中数据的深度监听或对象属性的监听实例
Jul 17 Javascript
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 的比较运算与逻辑运算详解
2016/05/12 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
PHP输出XML格式数据的方法总结
2017/02/08 PHP
js抽奖实现随机抽奖代码效果
2013/12/02 Javascript
JQuery中操作Css样式的方法
2014/02/12 Javascript
js中通过父级进行查找定位元素
2014/06/15 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
vue2.0 自定义日期时间过滤器
2017/06/07 Javascript
jQuery AJAX 方法success()后台传来的4种数据详解
2018/08/08 jQuery
如何获取vue单文件自身源码路径
2019/05/06 Javascript
解决Vue打包后访问图片/图标不显示的问题
2019/07/25 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
[01:34]2014DOTA2展望TI 剑指西雅图VG战队专访
2014/06/30 DOTA
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
简介Django中内置的一些中间件
2015/07/24 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
对python 生成拼接xml报文的示例详解
2018/12/28 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
如何使用python把ppt转换成pdf
2019/06/29 Python
django做form表单的数据验证过程详解
2019/07/26 Python
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
戴森西班牙官网:Dyson西班牙
2020/02/04 全球购物
Java里面如何创建一个内部类的实例
2015/01/19 面试题
机械设计及其自动化专业推荐信
2013/10/31 职场文书
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
实习生评语
2014/04/26 职场文书
励志演讲稿200字
2014/08/21 职场文书
创先争优演讲稿
2014/09/15 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
先进工作者事迹材料
2014/12/23 职场文书
教育实习指导教师评语
2014/12/31 职场文书
MySQL 使用SQL语句修改表名的实现
2021/04/07 MySQL
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL