JS继承之寄生类继承
原型式继承
其原理就是借助原型,可以基于已有的对象创建新对象。节省了创建自定义类型这一步(虽然觉得这样没什么意义)。
模型
function object(o){function W(){}W.prototype = o;return new W();
}
ES5新增了Object.create()方法规范化了原型式继承。即调用方法为:Object.create(o);
适用
只想让一个对象跟另一个对象建立继承这种关系的时候,可以用Object.create();这个方法,不兼容的时候,则手动添加该方法来兼容。
寄生式继承
寄生式继承是原型式继承的加强版。
模型
function createAnother(origin){var clone=object(origin);clone.say=function(){alert('hi')}return clone;
即在产生了这个继承了父类的对象之后,为这个对象添加一些增强方法。
寄生组合式继承
实质上,寄生组合继承是寄生式继承的加强版。这也是为了避免组合继承中无可避免地要调用两次父类构造函数的最佳方案。所以,开发人员普遍认为寄生组合式继承是引用类型最理想的继承范式。
基本模式
function inheritPrototype(SubType,SuperType){var prototype=object(SuperType.prototype);prototype.constructor=subType;subType.prototype=prototype;
}
这个object是自定义的一个相当于ES5中Object.create()方法的函数。在兼容性方面可以两个都写。
兼容写法
function object(o){function W(){}W.prototype=o;return new W;}function inheritPrototype(SubType,SuperType){var prototype;if(typeof Object.create==='function'){prototype=Object.create(SuperType.prototype);}else{prototype=object.create(SuperType.prototype);} prototype.constructor=SubType;SubType.prototype=prototype;}
转载于:https://www.cnblogs.com/LuckyWinty/p/5861176.html
JS继承之寄生类继承相关推荐
- 【JS继承】JS继承之寄生式继承
自我介绍:大家好,我是吉帅振的网络日志:微信公众号:吉帅振的网络日志:前端开发工程师,工作4年,去过上海.北京,经历创业公司,进过大厂,现在郑州敲代码. JS继承专栏 1[JS继承]什么是JS继承? ...
- JavaScript中实现继承的方法(深入学习原型链、盗用构造函数、组合继承、原型式继承、寄生式继承、寄生式组合继承)
一.原型链 原型链的基本思想就是通过原型继承多个引用类型的属性和方法. 构造函数.原型和实例的关系:每个构造函数都有一个原型对象,原型有一个属性指回构造函数,而实例有一个内部指针指向原型. 若原型是另 ...
- JS继承之寄生组合式继承
所谓寄生组合式继承,即通过借用构造函数来继承属性,通过原型链的混成形式来继承方法. 组合继承弥补了原型链和盗用构造函数的不足,是js中使用最多的继承模式. 实现思路: 不必为了指定子类型的原型而调用父 ...
- JS基础--组合继承,寄生组合式继承
以下内容总结自<JavaScript高级程序设计(第3版)> 一. 组合继承 组合继承使用原型链实现对原型属性和方法的继承,使用借用构造函数实现对实例属性的继承(引用类型的属性写在构造函数 ...
- java 中普通类继承,抽象类继承,接口类继承,子类一定要重写父类中的方法吗
一.简单总结,需要重写的有 普通类继承抽象类,重写所有抽象类方法:(不包括普通方法) 普通类继承接口,重写所有接口方法.(不包括default关键字修饰的方法) 详解见下: 普通类继承,并非一定要重写 ...
- python类继承实例_python类继承与子类实例初始化用法分析
这篇文章主要介绍了python类继承与子类实例初始化用法,实例分析了Python类的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 [ 先贴参考书籍原文(中文英文对照)] __init__方法介 ...
- 详细解析JavaScript中的继承(包括组合继承和寄生式继承)
继承:相信很多学习过Java等面向对象语言的同学,都会接触过继承,它们实现继承的主要方式是接口继承和实现继承.但由于JavaScript函数没有签名,所以无法实现接口继承.ECMAScript支持实现 ...
- js继承实现 狗类继承动物类
> 需求说明 根据类图使用js实现继承的效果 #mermaid-svg-spN1nCOPNErXb3f4 .label{font-family:'trebuchet ms', verdana, ...
- JS继承以及class类继承
继承的概念: 在原有的基础之上我们要进行继承,可以直接从父方法或者父类中的属性和方法,达到不用重复定义即可直接使用,就是代码的复用 ES5继承的方式有哪些? 原型链继承:将父方法的实例化对象赋给子方法 ...
最新文章
- 解决zabbix3.4图表显示中文乱码问题
- oracle系统级别启动数据库
- 63. Unique Paths II 不同路径 II
- 登录时本地保存账号密码及关闭ARC的方法
- python类属性的调用方法_问一个关于PYTHON类属性调用方法的问题
- mac adb 找不到设备_win/Mac办公软件下载找不到资源?试试这三个强大的神器
- java8 Map新增方法的使用
- 转 8天入门wpf—— 第六天 细说控件
- SAP License:外购和自产货物视同销售业务理解
- 大数据是如何改变零售行业的
- linux 开启allow_url_fopen,如何开启allow_url_fopen函数
- pandavan 固件squashfs只读文件系统如何上传应用程序
- multism中ui和uo应该怎么表示_Multisim中节点如何标记
- PTA-1016——Phone Bills
- 推荐系统:石器与青铜时代
- 土地利用转移矩阵的几种实现方法
- MVP模式在项目中的使用
- ​手把手教你做个AR涂涂乐 ​
- js获取浏览器默认语言设置并自动跳转
- 服务器虚拟机ping不通百度,未知的名称或服务,解决方法
热门文章
- jquery内容选择器
- android 横向滚动图片,Android使用Photoview实现图片左右滑动及缩放功能
- 主子表对应的字段_Power Pivot针对表筛选的函数及差异
- 一台服务器装两个sql server_超详细的centos7部署zabbix监控服务器教程分享
- java 对象的强制类型转换
- UnityShader18:立方体贴图(上)
- [汇编语言计算机原理] 带开机音乐,速度、进度和行驶方向显示的出租出计费系统设计
- java执行cmd命令并获取返回结果字符串
- OPNET网络仿真分析-1.1.1、网络仿真简介
- c#软件操作-cmd命令全解