老生常谈 关于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 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
Dec 26 Javascript
jquery datepicker参数介绍和示例
Apr 15 Javascript
javascript浏览器兼容教程之事件处理
Jun 09 Javascript
详解js产生对象的3种基本方式(工厂模式,构造函数模式,原型模式)
Jan 09 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
Jan 13 Javascript
深入解析js轮播插件核心代码的实现过程
Apr 14 Javascript
Vue通过input筛选数据
Oct 26 Javascript
基于bootstrop常用类总结(推荐)
Sep 11 Javascript
Vue常见面试题整理【值得收藏】
Sep 20 Javascript
element-ui表格合并span-method的实现方法
May 21 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 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
smarty+adodb+部分自定义类的php开发模式
2006/12/31 PHP
默默小谈PHP&MYSQL分页原理及实现
2007/01/02 PHP
php对象和数组相互转换的方法
2015/05/12 PHP
LAMP环境使用Composer安装Laravel的方法
2017/03/25 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
利用webqq协议使用python登录qq发消息源码参考
2013/04/08 Javascript
JavaScript中的值类型转换介绍
2014/12/31 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
基于HTML5上使用iScroll实现下拉刷新,上拉加载更多
2016/05/21 Javascript
angular中实现控制器之间传递参数的方式
2017/04/24 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
详解node nvm进行node多版本管理
2017/10/21 Javascript
Vue中在新窗口打开页面及Vue-router的使用
2018/06/13 Javascript
react 国际化的实现代码示例
2018/09/14 Javascript
Bootstrap 按钮样式与使用代码详解
2018/12/09 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
Vue利用Blob下载原生二进制数组文件
2019/09/25 Javascript
Python工程师面试题 与Python Web相关
2016/01/14 Python
Python 多线程Threading初学教程
2017/08/22 Python
基于Django模板中的数字自增(详解)
2017/09/05 Python
Flask框架响应、调度方法和蓝图操作实例分析
2018/07/24 Python
使用 Django Highcharts 实现数据可视化过程解析
2019/07/31 Python
Pandas的Apply函数具体使用
2020/07/21 Python
员工工作表扬信范文
2014/01/13 职场文书
情侣吵架检讨书
2014/02/05 职场文书
高中课程设置方案
2014/05/28 职场文书
代理人委托书
2014/08/01 职场文书
尊老爱亲美德少年事迹材料
2014/08/14 职场文书
2015年元旦演讲稿
2014/09/12 职场文书
2014年电厂工作总结
2014/12/04 职场文书
销售经理工作检讨书
2015/02/19 职场文书
2019同学聚会主持词
2019/05/06 职场文书
go web 预防跨站脚本的实现方式
2021/06/11 Golang