老生常谈 关于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中的when实现多个AJAX请求对应单个回调的例子分享
Apr 23 Javascript
JavaScript实现找出字符串中第一个不重复的字符
Sep 03 Javascript
ichart.js绘制虚线、平均分虚线效果的实现代码
May 05 Javascript
JavaScript数组去重由慢到快由繁到简(优化篇)
Aug 26 Javascript
js 监控iframe URL的变化实例代码
Jul 12 Javascript
微信小程序实现顶部选项卡(swiper)
Jun 19 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
Promise扫盲贴
Jun 24 Javascript
vue 更改连接后台的api示例
Nov 11 Javascript
JS中的变量作用域(console版)
Jul 18 Javascript
Element Cascader 级联选择器的使用示例
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
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
php简单复制文件的方法
2016/05/09 PHP
php解决DOM乱码的方法示例代码
2016/11/20 PHP
ThinkPHP5框架中使用JWT的方法示例
2020/06/03 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
JavaScript中string转换成number介绍
2014/12/31 Javascript
Javascript中的作用域和上下文深入理解
2015/07/03 Javascript
Javascript基础_嵌入图像的简单实现
2016/06/14 Javascript
JS封装的三级联动菜单(使用时只需要一行js代码)
2016/10/24 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
利用express启动一个server服务的方法
2017/09/17 Javascript
jQuery利用FormData上传文件实现批量上传
2018/12/04 jQuery
JS实现水平移动与垂直移动动画
2019/12/19 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
[02:33]2018 DOTA2亚洲邀请赛回顾视频 再次拾起那些美妙的时刻
2018/04/10 DOTA
Python求算数平方根和约数的方法汇总
2016/03/09 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
分享Pycharm中一些不为人知的技巧
2018/04/03 Python
使用python socket分发大文件的实现方法
2019/07/08 Python
pytorch AvgPool2d函数使用详解
2020/01/03 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
浅谈Python3多线程之间的执行顺序问题
2020/05/02 Python
Python如何telnet到网络设备
2021/02/18 Python
世界上最大的在线旅行社新加坡网站:Expedia新加坡
2016/08/25 全球购物
VIVOBAREFOOT赤脚鞋:让您的脚做自然的事情
2017/06/01 全球购物
乌克兰时尚鞋子和衣服购物网站:Born2be
2018/05/24 全球购物
牵手50新加坡:专为黄金岁月的单身人士而设的交友网站
2020/08/16 全球购物
Tahari ASL官方网站:高级设计师女装
2021/03/15 全球购物
sort命令的作用和用法
2013/08/25 面试题
五一家具促销方案
2014/01/10 职场文书
高等学院职业生涯规划书范文
2014/09/16 职场文书
经典祝酒词大全
2015/08/12 职场文书
班主任经验交流心得体会
2015/11/02 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android