老生常谈 关于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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
JQuery实现用户名无刷新验证的小例子
Mar 22 Javascript
微信小程序 实现tabs选项卡效果实例代码
Oct 31 Javascript
浅谈Angular的$q, defer, promise
Dec 20 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 Javascript
详解html-webpack-plugin用法全解
Jan 22 Javascript
eslint 的三大通用规则详解
May 16 Javascript
js 对象使用的小技巧实例分析
Nov 08 Javascript
JS控制只能输入数字并且最多允许小数点两位
Nov 24 Javascript
微信小程序关键字变色实现代码实例
Dec 13 Javascript
react结合bootstrap实现评论功能
May 30 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
文件系统基本操作类
2006/11/23 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
始终在屏幕中间显示Div的代码(css+js)
2011/03/10 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
JQuery给元素绑定click事件多次执行的解决方法
2014/05/29 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
js实现点击切换TAB标签实例
2015/08/21 Javascript
jQuery实现自定义右键菜单的树状菜单效果
2015/09/02 Javascript
浅谈js script标签中的预解析
2016/12/30 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
2019/05/16 Javascript
Vue动态创建注册component的实例代码
2019/06/14 Javascript
基于form-data请求格式详解
2019/10/29 Javascript
原生js实现移动小球(碰撞检测)
2020/12/17 Javascript
Python实现的密码强度检测器示例
2017/08/23 Python
利用python实现简单的邮件发送客户端示例
2017/12/23 Python
Python中Threading用法详解
2017/12/27 Python
使用Python+Splinter自动刷新抢12306火车票
2018/01/03 Python
对numpy数据写入文件的方法讲解
2018/07/09 Python
flask入门之表单的实现
2018/07/18 Python
解决python多线程报错:AttributeError: Can't pickle local object问题
2020/04/08 Python
使用python操作lmdb对数据读取的实例
2020/12/11 Python
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
如何利用cmp命令比较文件
2013/09/23 面试题
货代行业个人求职简历的自我评价
2013/10/22 职场文书
小学教师师德反思
2014/02/03 职场文书
生日主持词
2014/03/20 职场文书
小学生暑假家长评语
2014/04/17 职场文书
与美同行演讲稿
2014/09/13 职场文书
开会通知短信大全
2015/04/20 职场文书
2015年招生工作总结
2015/05/04 职场文书
nodejs利用readline提示输入内容实例代码
2021/07/15 NodeJs
Python socket如何解析HTTP请求内容
2022/02/12 Python