老生常谈 关于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 获取元素位置的快速方法 getBoundingClientRect()
Nov 26 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
Sep 02 Javascript
分享20多个很棒的jQuery 文件上传插件或教程
Sep 04 Javascript
javascript中关于break,continue的特殊用法与介绍
May 24 Javascript
使用CSS样式position:fixed水平滚动的方法
Feb 19 Javascript
javascript鼠标跟随运动3种效果(眼球效果,苹果菜单,方向跟随)
Oct 27 Javascript
JavaScript实现图片切换效果
Aug 12 Javascript
JS中关于正则的巧妙操作
Aug 31 Javascript
详解Angular Forms中自定义ngModel绑定值的方式
Dec 10 Javascript
jquery的$().each和$.each的区别
Jan 18 jQuery
浅谈vue异步数据影响页面渲染
Oct 29 Javascript
微信小程序自定义弹出层效果
May 26 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
Nginx下配置codeigniter框架方法
2015/04/07 PHP
浅谈php的优缺点
2015/07/14 PHP
PHP实现电商订单自动确认收货redis队列
2017/05/17 PHP
PHP 7.4 新语法之箭头函数实例详解
2019/05/09 PHP
PHP实现财务审核通过后返现金额到客户的功能
2019/07/04 PHP
新浪中用来显示flash的函数
2007/04/02 Javascript
js 数据类型转换总结笔记
2011/01/17 Javascript
改进版通过Json对象实现深复制的方法
2012/10/24 Javascript
JavaScript:new 一个函数和直接调用函数的区别分析
2013/07/10 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
jQuery实现购物车计算价格功能的方法
2015/03/25 Javascript
AngularJS控制器之间的数据共享及通信详解
2016/08/01 Javascript
深入探究angular2 UI组件之primeNG用法
2017/07/26 Javascript
vue 做移动端微信公众号采坑经验记录
2018/04/26 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
Vue表单绑定的实例代码(单选按钮,选择框(单选时,多选时,用 v-for 渲染的动态选项)
2019/05/13 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
python利用datetime模块计算时间差
2015/08/04 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
WINDOWS 同时安装 python2 python3 后 pip 错误的解决方法
2017/03/16 Python
对python中return和print的一些理解
2017/08/18 Python
python中lambda()的用法
2017/11/16 Python
python调用摄像头拍摄数据集
2019/06/01 Python
PyTorch的深度学习入门教程之构建神经网络
2019/06/27 Python
Python使用线程来接收串口数据的示例
2019/07/02 Python
python匿名函数用法实例分析
2019/08/03 Python
python3实现绘制二维点图
2019/12/04 Python
css3 clip实现圆环进度条的示例代码
2018/02/07 HTML / CSS
HTML5上传文件显示进度的实现代码
2012/08/30 HTML / CSS
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
寻找完美的房车租赁:RVShare
2019/02/23 全球购物
《母亲的恩情》教学反思
2014/02/13 职场文书
2015年销售工作总结范文
2015/03/30 职场文书
redis protocol通信协议及使用详解
2022/07/15 Redis