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 相关文章推荐
简单的JS多重继承示例
Mar 13 Javascript
网页实时显示服务器时间和javscript自运行时钟
Jun 09 Javascript
JS获取IMG图片高宽的简单实例
May 17 Javascript
jquery 获取select数组与name数组长度的实现代码
Jun 20 Javascript
基于jquery实现弹幕效果
Sep 29 Javascript
JavaScript实现页面无操作倒计时退出
Oct 22 Javascript
JavaScript闭包和回调详解
Aug 09 Javascript
jsonp跨域获取数据的基础教程
Jul 01 Javascript
微信小程序日历弹窗选择器代码实例
May 09 Javascript
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
Oct 26 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
Sep 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注入实例
2006/10/09 PHP
CodeIgniter上传图片成功的全部过程分享
2013/08/12 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
PHP中isset()和unset()函数的用法小结
2014/03/11 PHP
PHP获取ip对应地区和使用网络类型的方法
2015/03/11 PHP
php读取csc文件并输出
2015/05/21 PHP
PHP环形链表实现方法示例
2017/09/15 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
精解window.setTimeout()&window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
修改jQuery Validation里默认的验证方法
2012/02/14 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
jQuery插件编写步骤详解
2016/06/03 Javascript
Web打印解决方案之普通报表打印功能
2016/08/29 Javascript
bootstrap模态框实现拖拽效果
2016/12/14 Javascript
vue2 如何实现div contenteditable=“true”(类似于v-model)的效果
2017/02/08 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
Vue 组件(component)教程之实现精美的日历方法示例
2018/01/08 Javascript
vue 动态给每个页面添加title、关键词和描述的方法
2020/08/28 Javascript
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
使用pandas实现csv/excel sheet互相转换的方法
2018/12/10 Python
python+pyqt5编写md5生成器
2019/03/18 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
Python如何调用JS文件中的函数
2019/08/16 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
Python 图片处理库exifread详解
2021/02/25 Python
10分钟理解CSS3 FlexBox弹性布局
2018/12/20 HTML / CSS
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
名词解释型面试题(主要是网络)
2013/12/27 面试题
文化与传播毕业生求职信
2014/03/09 职场文书
青年文明号创建承诺
2014/03/31 职场文书
公共场所禁烟标语
2014/06/25 职场文书
中专生自荐信
2014/06/25 职场文书
吧主申请感言怎么写
2015/08/03 职场文书
谢师宴学生答谢词
2015/09/30 职场文书
《没有任何借口》读后感:完美的执行能力
2020/01/07 职场文书
Mysql关于数据库是否应该使用外键约束详解说明
2021/10/24 MySQL