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 相关文章推荐
FCK调用方法..
Dec 21 Javascript
Javascript延迟执行实现方法(setTimeout)
Dec 30 Javascript
jquery+css+ul模拟列表菜单具体实现思路
Apr 15 Javascript
jQuery中的val()示例应用
Feb 26 Javascript
jQuery实现个性翻牌效果导航菜单的方法
Mar 09 Javascript
一看就懂:jsonp详解
Jun 01 Javascript
Bootstrap模态框插件使用详解
May 11 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
js微信分享实现代码
Oct 11 Javascript
深入浅析angular和vue还有jquery的区别
Aug 13 jQuery
vue如何获取自定义元素属性参数值的方法
May 14 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 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中session过期时间设置及session回收机制介绍
2014/05/05 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
详解js异步文件加载器
2016/01/24 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
php使用curl伪造来源ip和refer的方法示例
2018/05/08 PHP
浅谈javascript的数据类型检测
2010/07/10 Javascript
关于jQuery中的each方法(jQuery到底干了什么)
2014/03/05 Javascript
jquery实现顶部向右伸缩的导航区域代码
2015/09/02 Javascript
jQuery实现form表单元素序列化为json对象的方法
2015/12/09 Javascript
举例讲解如何判断JavaScript中对象的类型
2016/04/22 Javascript
浅析JS中对函数function的理解(基础篇)
2016/10/14 Javascript
JS打开摄像头并截图上传示例
2017/02/18 Javascript
Vue-router 切换组件页面时进入进出动画方法
2018/09/01 Javascript
vue实现评论列表功能
2019/10/25 Javascript
[02:15]你好,这就是DOTA!
2015/08/05 DOTA
python中星号变量的几种特殊用法
2016/09/07 Python
Python数据结构与算法之图结构(Graph)实例分析
2017/09/05 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python实现二叉树的常见遍历操作总结【7种方法】
2019/03/06 Python
详解Python函数式编程—高阶函数
2019/03/29 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
html5中的一些标签学习(心得)
2016/10/18 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
体育教师自荐信范文
2013/12/16 职场文书
学校介绍信范文
2014/01/14 职场文书
ktv好的活动方案
2014/08/15 职场文书
群众路线领导班子四风对照检查材料
2014/09/27 职场文书
公司离职证明标准范本
2014/10/05 职场文书
员工辞职信范文大全
2015/05/12 职场文书
Python中os模块的简单使用及重命名操作
2021/04/17 Python
详解Java实现数据结构之并查集
2021/06/23 Java/Android