老生常谈 关于JavaScript的类的继承


Posted in Javascript onJune 24, 2016

其实最一开始学JS的时候就看过继承的实现。当时只是去试着理解从书上看来的代码段而已。今天又重新思考了一下,感觉这是一个思维探索演进的结果。

继承,即复用。

如果抛开继承的固有思想,让b复用a的成员,最简单粗暴的做法, b=a;

那么,问题来了: 对b的任何改动,就是对a的改动(同一个object嘛)。

好吧,那就拷贝一份,浅拷贝不够安全的话,就用深拷贝。

问题:代码是复用了,但内存浪费了(不管是变量还是方法,在JS中都是对象)。

不拷贝,只读不写,就可以用JS的原型,b.__proto__ = a。一般我们不直接更改__proto__,太暴力了,JS中提供了一个method可以比较“温和”地达到目的——Object.create(b)。

老生常谈 关于JavaScript的类的继承

这个方法可行,但这只是具体对象的复用模式,如果做到“利用ConstructorB创建的对象能复用ConstructorA的对象的原型”呢?

答案是:将b看成是ConstructorB.prototype,将a看成ConstructorA.prototype.

老生常谈 关于JavaScript的类的继承

问题:

老生常谈 关于JavaScript的类的继承

解决方法:

申明ConstructorB的时候,系统自动会让ConstructorB.prototype.constructor=ConstructorB; 在上面代码中为了复用ConstructorA.prototype, 丢掉了constructor, 补上即可。

老生常谈 关于JavaScript的类的继承

以上是最基本的继承,关于子类如何更通用地调用父类的构造函数及成员(如this._super),如何更通用地实现继承模式(如A=inheritFrom(B)),等等,不在本文范围^O^

以上就是小编为大家带来的老生常谈 关于JavaScript的类的继承全部内容了,希望大家多多支持三水点靠木~

Javascript 相关文章推荐
实现png图片和png背景透明(支持多浏览器)的方法
Sep 08 Javascript
js querySelector和getElementById通过id获取元素的区别
Apr 20 Javascript
读取input:file的路径并显示本地图片的方法
Sep 23 Javascript
教你如何使用PHP输出中文JSON字符串
May 22 Javascript
jquery遍历函数siblings()用法实例
Dec 24 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
js replace()去除代码中空格的实例
Feb 14 Javascript
jquery tmpl模板(实例讲解)
Sep 02 jQuery
jQuery使用bind函数实现绑定多个事件的方法
Oct 11 jQuery
JavaScript中callee和caller的区别与用法实例分析
Jun 28 Javascript
JavaScript Dom 绑定事件操作实例详解
Oct 02 Javascript
javascript之Object.assign()的痛点分析
Mar 03 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 #Javascript
EasyUI在表单提交之前进行验证的实例代码
Jun 24 #Javascript
正则表达式(语法篇推荐)
Jun 24 #Javascript
javascript弹出窗口中增加确定取消按钮
Jun 24 #Javascript
javascript类型系统_正则表达式RegExp类型详解
Jun 24 #Javascript
JQuery DIV 动态隐藏和显示的方法
Jun 23 #Javascript
微信QQ的二维码登录原理js代码解析
Jun 23 #Javascript
You might like
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
基于PHP实现短信验证码发送次数限制
2020/07/11 PHP
提高 DHTML 页面性能
2006/12/25 Javascript
JQuery CSS样式控制 学习笔记
2009/07/23 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
Js放到HTML文件中的哪个位置有什么区别
2013/08/21 Javascript
js转义字符介绍
2013/11/05 Javascript
浅谈JavaScript中Date(日期对象),Math对象
2015/02/05 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
jquery实现手风琴效果
2015/11/20 Javascript
详解WordPress开发中get_current_screen()函数的使用
2016/01/11 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
BootStrap实现鼠标悬停下拉列表功能
2017/02/17 Javascript
Kindeditor单独调用单图上传增加预览功能的实例
2017/07/31 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
JavaScript实现的联动菜单特效示例
2019/07/08 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
element-ui如何防止重复提交的方法步骤
2019/12/09 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
vue实现一个矩形标记区域(rectangle marker)的方法
2020/10/28 Javascript
[04:28]2014DOTA2国际邀请赛 采访小兔子LGD挺进钥匙体育馆
2014/07/14 DOTA
python中pycurl库的用法实例
2014/09/30 Python
python机器学习实战之树回归详解
2017/12/20 Python
Python argparse模块应用实例解析
2019/11/15 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
一些网络技术方面的面试题
2014/05/01 面试题
中专毕业生自我鉴定
2014/02/02 职场文书
《生命 生命》教学反思
2014/04/19 职场文书
绍兴鲁迅故居导游词
2015/02/09 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
撤诉申请怎么写
2015/05/19 职场文书
领导干部学习十八届五中全会精神心得体会
2016/01/05 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书