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不可用的问题探究
Oct 01 Javascript
jquery属性选择器not has怎么写 行悬停高亮显示
Nov 13 Javascript
javascript实现动态统计图开发实例
Nov 21 Javascript
Bootstrap每天必学之下拉菜单
Nov 25 Javascript
AngularJS身份验证的方法
Feb 17 Javascript
深入理解js函数的作用域与this指向
May 28 Javascript
探索Vue.js component内容实现
Nov 03 Javascript
详解jQuery-each()方法
Mar 13 jQuery
Vue模板语法中数据绑定的实例代码
May 17 Javascript
vue中英文切换实例代码
Jan 21 Javascript
nuxt引入组件和公共样式的操作
Nov 05 Javascript
Vue3实现简易音乐播放器组件
Aug 14 Vue.js
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实现Socket服务器的代码
2008/04/03 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
js获取location.href的参数实例代码
2013/08/02 Javascript
JSON无限折叠菜单编写实例
2013/12/16 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
深入解读JavaScript中的Hoisting机制
2015/08/12 Javascript
jQuery同步提交示例代码
2015/12/12 Javascript
Fullpage.js固定导航栏-实现定位导航栏
2016/03/17 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
jquery插件锦集【推荐】
2016/12/16 Javascript
js + css实现标签内容切换功能(实例讲解)
2017/10/09 Javascript
浅谈vue权限管理实现及流程
2020/04/23 Javascript
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python的Flask框架中web表单的教程
2015/04/20 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
Python中运算符"=="和"is"的详解
2016/10/08 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
使用Python的toolz库开始函数式编程的方法
2018/11/15 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
2020/05/13 Python
pandas DataFrame运算的实现
2020/06/14 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
python 实现朴素贝叶斯算法的示例
2020/09/30 Python
浅析rem和em和px vh vw和% 移动端长度单位
2016/04/28 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
波兰补充商店:Muscle Power
2018/10/29 全球购物
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
ShellScript面试题一则-ShellScript编程
2014/03/05 面试题
创业计划书的写作技巧及要点
2014/01/31 职场文书
建国大业观后感600字
2015/06/01 职场文书
2016中秋节问候语
2015/11/11 职场文书
安全生产学习心得体会
2016/01/18 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书
mysql的数据压缩性能对比详情
2021/11/07 MySQL