老生常谈 关于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 相关文章推荐
jquery插件之信息弹出框showInfoDialog(成功/错误/警告/通知/背景遮罩)
Jan 09 Javascript
JS打印gridview实现原理及代码
Feb 05 Javascript
js实现上传图片之上传前预览图片
Mar 25 Javascript
js 判断浏览器使用的语言示例代码
Mar 22 Javascript
简介JavaScript中Math.cos()余弦方法的使用
Jun 15 Javascript
js判断日期时间有效性的方法
Oct 24 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
Jan 22 Javascript
HTML页面定时跳转方法解析(2种任选)
Dec 22 Javascript
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
React 使用browserHistory项目访问404问题解决
Jun 01 Javascript
为什么JavaScript中0.1 + 0.2 != 0.3
Dec 03 Javascript
Vue的生命周期一起来看看
Feb 24 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浏览历史记录的方法
2015/03/10 PHP
PHP实现支付宝即时到账功能
2016/12/21 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
laravel ORM 只开启created_at的几种方法总结
2018/01/29 PHP
PHP实现文件上传操作和封装
2020/03/04 PHP
利用PHP内置SERVER开启web服务(本地开发使用)
2021/03/09 PHP
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
html+js实现动态显示本地时间
2013/09/21 Javascript
node中socket.io的事件使用详解
2014/12/15 Javascript
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
javascript验证内容为数字以及长度为10的简单实例
2016/08/20 Javascript
使用JS轻松实现ionic调用键盘搜索功能(超实用)
2016/09/06 Javascript
Angular2下使用pdf插件的方法详解
2017/04/29 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
Angular 2父子组件数据传递之@ViewChild获取子组件详解
2017/07/04 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
vue2.0 和 animate.css的结合使用
2017/12/12 Javascript
Vue实现数据表格合并列rowspan效果
2020/11/30 Javascript
Vue中el-form标签中的自定义el-select下拉框标签功能
2020/04/20 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
python实现rsa加密实例详解
2017/07/19 Python
python 自动重连wifi windows的方法
2018/12/18 Python
PyTorch: Softmax多分类实战操作
2020/07/07 Python
CSS3毛玻璃效果(blur)有白边问题的解决方法
2016/11/15 HTML / CSS
HTML5中判断横屏竖屏的方法(移动端)
2016/08/04 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
给校长的建议书400字
2014/05/15 职场文书
2016年元旦寄语
2015/08/17 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
2016年小学生清明节广播稿
2015/12/17 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang