老生常谈 关于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 相关文章推荐
js获取url参数值的两种方式
Sep 10 Javascript
网站繁简切换的JS遇到页面卡死的解决方法
Mar 12 Javascript
jQuery中hide()方法用法实例
Dec 24 Javascript
关于Javascript回调函数的一个妙用
Aug 29 Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 Javascript
使用vue.js编写蓝色拼图小游戏
Mar 17 Javascript
ES6学习教程之对象字面量详解
Oct 09 Javascript
vue-cli2.9.3 详细教程
Apr 23 Javascript
详解vue中移动端自适应方案
May 05 Javascript
在Vue环境下利用worker运行interval计时器的步骤
Aug 01 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
Vue实现简易购物车页面
Dec 30 Vue.js
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
PHP脚本数据库功能详解(上)
2006/10/09 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
PHP和javascript常用正则表达式及用法实例
2014/07/01 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
PHP 微信支付类 demo
2015/11/30 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
2017/03/16 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
PHP的PDO大对象(LOBs)
2019/01/27 PHP
给Function做的OOP扩展
2009/05/07 Javascript
JS实现简单的顶部定时关闭层效果
2014/06/15 Javascript
ZeroClipboard插件实现多浏览器复制功能(支持firefox、chrome、ie6)
2014/08/30 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
javascript多行字符串的简单实现方式
2015/05/04 Javascript
Bootstrap字体图标无法正常显示的解决方法
2016/10/08 Javascript
深入理解Angularjs向指令传递数据双向绑定机制
2016/12/31 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
详解有关easyUI的拖动操作中droppable,draggable用法例子
2017/06/03 Javascript
20行js代码实现的贪吃蛇小游戏
2017/06/20 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
Node使用Nodemailer发送邮件的方法实现
2020/02/24 Javascript
javascript操作向表格中动态加载数据
2020/08/27 Javascript
Openlayers实现地图全屏显示
2020/09/28 Javascript
html+vue.js 实现漂亮分页功能可兼容IE
2020/11/07 Javascript
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python中if __name__ == "__main__"详细解释
2014/10/21 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python批量修改图片大小的方法
2018/07/24 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
支持IE8的纯css3开发的响应式设计动画菜单教程
2014/11/05 HTML / CSS
CSS3实现各种图形的示例代码
2016/10/19 HTML / CSS
JENNIFER BEHR官网:各种耳环和发饰
2020/06/07 全球购物
小学六年级学生评语
2014/04/22 职场文书
2015年环卫工作总结
2015/04/28 职场文书
Python一些基本的图像操作和处理总结
2021/06/23 Python