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 相关文章推荐
JavaScript 学习笔记(十五)
Jan 28 Javascript
jQuery之end()和pushStack()使用介绍
Feb 07 Javascript
jQuery实现垂直半透明手风琴特效代码分享
Aug 21 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
jquery 键盘事件的使用方法详解
Sep 13 jQuery
JS中跳出循环的示例代码
Sep 14 Javascript
bootstrap日期插件daterangepicker使用详解
Oct 19 Javascript
记一次vue-webpack项目优化实践详解
Feb 17 Javascript
如何优雅地在vue中添加权限控制示例详解
Mar 07 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
Electron vue的使用教程图文详解
Jul 05 Javascript
原生JavaScript实现留言板
Jan 10 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支持页面回退的两种方法
2008/01/10 PHP
mysql下创建字段并设置主键的php代码
2010/05/16 PHP
php 操作符与控制结构
2012/03/07 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
php获取本周星期一具体日期的方法
2015/04/20 PHP
php微信开发之自定义菜单完整流程
2016/10/08 PHP
PHP实现的简单sha1加密功能示例
2017/08/27 PHP
PHP开发之用微信远程遥控服务器
2018/01/25 PHP
js有关元素内容操作小结
2011/12/20 Javascript
JQuery获取与设置HTML元素的内容或文本的实现代码
2014/06/20 Javascript
jQuery判断数组是否包含了指定的元素
2015/03/10 Javascript
详解JavaScript中的自定义事件编写
2016/05/10 Javascript
JS弹出窗口插件zDialog简单用法示例
2016/06/12 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
详解JavaScript的闭包、IIFE、apply、函数与对象
2016/12/21 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
react-router实现按需加载
2017/05/09 Javascript
bootstrap的工具提示实例代码
2017/05/17 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
vue实现选中效果
2020/10/07 Javascript
使用Python的Twisted框架实现一个简单的服务器
2015/04/16 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
python paramiko模块学习分享
2017/08/23 Python
Flask框架模板渲染操作简单示例
2019/07/31 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
python小项目之五子棋游戏
2019/12/26 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
html5音频_动力节点Java学院整理
2018/08/22 HTML / CSS
美国高档百货Nordstrom的折扣店:Nordstrom Rack
2017/11/13 全球购物
Weblogc domain问题
2014/01/27 面试题
养殖人员的创业计划书范文
2013/12/26 职场文书
放飞梦想演讲稿200字
2014/08/26 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
导游词之金鞭溪风景区
2019/09/12 职场文书
vue如何清除浏览器历史栈
2022/05/25 Vue.js