老生常谈 关于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 相关文章推荐
基于json的jquery地区联动效果代码
Jul 06 Javascript
详细解密jsonp跨域请求
Apr 15 Javascript
详解JavaScript的while循环的使用
Jun 03 Javascript
js中动态创建json,动态为json添加属性、属性值的实例
Dec 02 Javascript
Vue.js如何优雅的进行form validation
Apr 07 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
vue router2.0二级路由的简单使用
Jul 05 Javascript
vue不通过路由直接获取url中参数的方法示例
Aug 24 Javascript
简单的vuex 的使用案例笔记
Apr 13 Javascript
前后端常见的几种鉴权方式(小结)
Aug 04 Javascript
js模拟实现烟花特效
Mar 10 Javascript
谈一谈vue请求数据放在created好还是mounted里好
Jul 27 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
mysql5详细安装教程
2007/01/15 PHP
php仿discuz分页效果代码
2008/10/02 PHP
PHP教程之PHP中shell脚本的使用方法分享
2012/02/23 PHP
使用php发送有附件的电子邮件-(PHPMailer使用的实例分析)
2013/04/26 PHP
ThinkPHP利用PHPMailer实现邮件发送实现代码
2013/09/26 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
js function使用心得
2010/05/10 Javascript
基于jquery的多功能软键盘插件
2012/07/25 Javascript
jquery预览图片实现鼠标放上去显示实际大小
2014/01/16 Javascript
JavaScript AJAX之惰性载入函数
2014/08/27 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
js实现统计字符串中特定字符出现个数的方法
2016/08/02 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
vue打包后显示空白正确处理方法
2017/11/01 Javascript
Vue CLI3 如何支持less的方法示例
2018/08/29 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
详细讲解如何创建, 发布自己的 Vue UI 组件库
2019/05/29 Javascript
微信小程序实现横向滚动导航栏效果
2019/12/12 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
python hook监听事件详解
2018/10/25 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
2019/06/27 Python
html5 video标签屏蔽右键视频另存为的js代码
2013/11/12 HTML / CSS
webView加载html图片遇到的问题解决
2019/10/08 HTML / CSS
加拿大最大的相机店:Henry’s
2017/05/17 全球购物
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
什么是TCP/IP
2014/07/27 面试题
会计电算化个人求职信范文
2014/01/24 职场文书
管理专员自荐信
2014/01/26 职场文书
小学生学习感言
2014/03/10 职场文书
三爱活动实施方案
2014/03/19 职场文书
太太口服液广告词
2014/03/20 职场文书
工作自我评价范文
2019/03/21 职场文书