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 相关文章推荐
WordPress JQuery处理沙发头像
Jun 22 Javascript
js 刷新页面的代码小结 推荐
Apr 02 Javascript
javascript加号"+"的二义性说明
Mar 04 Javascript
JS+CSS实现的经典圆角下拉菜单效果代码
Oct 21 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
Apr 14 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
javascript 中的继承实例详解
May 05 Javascript
最通俗易懂的javascript变量提升详解
Aug 05 Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 Javascript
微信小程序如何获取地址
Dec 24 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 Javascript
react-native 实现购物车滑动删除效果的示例代码
Jan 15 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
雄兵连三大错觉:凯莎没了,凉冰阵亡了,华烨觉得自己又行了
2020/04/09 国漫
德生PL450的电路分析和低放电路的改进办法
2021/03/02 无线电
PHP读取目录下所有文件的代码
2008/01/07 PHP
解析smarty模板中类似for的功能实现
2013/06/18 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
2013/07/01 PHP
PHP CURL获取cookies模拟登录的方法
2013/11/04 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
php采用session实现防止页面重复刷新
2015/12/24 PHP
Bootstrap组件(一)之菜单
2016/05/11 Javascript
浅谈js中几种实用的跨域方法原理详解
2016/12/02 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
web前端vue filter 过滤器
2018/01/12 Javascript
JavaScript实现短暂提示框功能
2018/04/04 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
vue-lazyload使用总结(推荐)
2018/11/01 Javascript
深入浅出vue图片路径的实现
2019/09/04 Javascript
React中获取数据的3种方法及优缺点
2020/02/18 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
Python heapq使用详解及实例代码
2017/01/25 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
Python for循环中的陷阱详解
2018/07/13 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
2019/04/11 Python
PyQt4 treewidget 选择改变颜色,并设置可编辑的方法
2019/06/17 Python
澳大利亚便宜隐形眼镜购买网站:QUICKLENS Australia
2018/10/06 全球购物
P D PAOLA意大利官网:西班牙著名的珠宝首饰品牌
2019/09/24 全球购物
个人简历的自荐信
2013/10/23 职场文书
理工大学毕业生自荐信
2013/11/01 职场文书
项目合作计划书
2014/01/09 职场文书
爱心捐助倡议书
2014/05/19 职场文书
银行转正自我鉴定
2014/09/29 职场文书
2015大学生党员自我评价范文
2015/03/03 职场文书
教师工作证明范本
2015/06/12 职场文书
小学教师见习总结
2015/06/23 职场文书
python 使用pandas读取csv文件的方法
2022/12/24 Python