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 相关文章推荐
jQuery 相关控件的事件操作分解
Aug 03 Javascript
Js获取事件对象代码
Aug 05 Javascript
extjs中grid中嵌入动态combobox的应用
Jan 01 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
jquery ajax双击div可直接修改div中的内容
Mar 04 Javascript
第一次接触JS require.js模块化工具
Apr 17 Javascript
总结JavaScript设计模式编程中的享元模式使用
May 21 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 Javascript
React学习笔记之列表渲染示例详解
Aug 22 Javascript
vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀
Jun 13 Javascript
ES6 let和const定义变量与常量的应用实例分析
Jun 27 Javascript
js实现圆形显示鼠标单击位置
Feb 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
跟我学Laravel之配置Laravel
2014/10/15 PHP
php图片的二进制转换实现方法
2014/12/15 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP手机短信验证码实现流程详解
2018/05/17 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
JS返回上一页实例代码通过图片和按钮分别实现
2013/08/16 Javascript
jQuery循环滚动新闻列表示例代码
2014/06/17 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
使用JS正则表达式 替换括号,尖括号等
2016/11/29 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
纯js实现倒计时功能
2017/01/06 Javascript
原生JS轮播图插件
2017/02/09 Javascript
jQuery validata插件实现方法
2017/06/25 jQuery
React Native之TextInput组件解析示例
2017/08/22 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
mpvue+vant app搭建微信小程序的方法步骤
2019/02/11 Javascript
JS控制GIF图片的停止与显示
2019/10/24 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
JavaScript实现放大镜效果代码示例
2020/04/29 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
python保存字符串到文件的方法
2015/07/01 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Python列表与元组的异同详解
2019/07/02 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
自我鉴定范文300字
2013/10/01 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
演讲稿的写法
2014/05/19 职场文书
习总书记三严三实学习心得体会
2014/10/13 职场文书
防溺水安全教育主题班会
2015/08/12 职场文书
2015年教师个人业务工作总结
2015/10/23 职场文书
意外事故赔偿协议书
2016/03/22 职场文书