老生常谈 关于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 相关文章推荐
Javascript 构造函数 实例分析
Nov 26 Javascript
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
修改js Calendar日历控件 兼容IE9/谷歌/火狐
Jan 04 Javascript
JavaScript检测鼠标移动方向的方法
May 22 Javascript
JQuery实现简单的服务器轮询效果实例
Mar 31 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
JS使用正则表达式验证身份证号码
Jun 23 Javascript
在小程序Canvas中使用measureText的方法示例
Oct 19 Javascript
Vue中的验证登录状态的实现方法
Mar 09 Javascript
vue2.0自定义指令示例代码详解
Apr 25 Javascript
javascript严格模式详解(含严格模式与非严格模式的区别)
Nov 12 Javascript
js实现盒子滚动动画效果
Aug 09 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
PHP中函数rand和mt_rand的区别比较
2012/12/26 PHP
php笔记之:有规律大文件的读取与写入的分析
2013/04/26 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
postfixadmin忘记密码后的修改密码方法详解
2016/07/20 PHP
php 如何设置一个严格控制过期时间的session
2017/05/05 PHP
PHP按符号截取字符串的指定部分的实现方法
2018/09/10 PHP
多个iframe自动调整大小的问题
2006/09/18 Javascript
js 编码转换 gb2312 和 utf8 互转的2种方法
2013/08/07 Javascript
JavaScript生成随机数的4种自定义函数分享
2015/02/28 Javascript
js+html5实现canvas绘制简单矩形的方法
2015/06/05 Javascript
javascript中 try catch用法
2015/08/16 Javascript
JavaScript代码实现图片循环滚动效果
2020/03/19 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
layui文件上传控件带更改后数据传值的方法
2019/09/23 Javascript
微信小程序input抖动问题的修复方法
2021/03/03 Javascript
python获取网页状态码示例
2014/03/30 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
Python用imghdr模块识别图片格式实例解析
2018/01/11 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Python使用socketServer包搭建简易服务器过程详解
2020/06/12 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
Lime Crime官网:美国一家主打梦幻精灵系的彩妆品牌
2019/03/22 全球购物
中职生自我鉴定范文
2013/10/03 职场文书
小学生期末评语
2014/04/21 职场文书
介绍信的写法
2015/01/31 职场文书
外贸业务员岗位职责
2015/02/13 职场文书
pytorch 实现变分自动编码器的操作
2021/05/24 Python
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
mysql sock 文件解析及作用讲解
2022/07/15 MySQL
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python