老生常谈 关于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 相关文章推荐
根据邮箱的域名跳转到相应的登录页面的代码
Feb 27 Javascript
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
鼠标选择动态改变网页背景颜色的JS代码
Dec 10 Javascript
angularJS Provider、factory、service详解及实例代码
Sep 21 Javascript
详解Vue自定义过滤器的实现
Jan 10 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
vue项目中用cdn优化的方法
Jan 03 Javascript
微信小程序利用swiper+css实现购物车商品删除功能
Mar 06 Javascript
JS中的函数与对象的创建方式
May 12 Javascript
微信小程序表单验证插件WxValidate的二次封装功能(终极版)
Sep 03 Javascript
vue+ts下对axios的封装实现
Feb 18 Javascript
Vue+penlayers实现多边形绘制及展示
Dec 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&mysql 日期操作小记
2012/02/27 PHP
php配合jquery实现增删操作具体实例
2013/12/12 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
解决 firefox 不支持 document.all的方法
2007/03/12 Javascript
Use Word to Search for Files
2007/06/15 Javascript
js 可拖动列表实现代码
2011/12/13 Javascript
深入解析JavaScript中的arguments对象
2016/06/12 Javascript
JavaScript如何一次性展示几万条数据
2017/03/30 Javascript
AngularJs 常用的过滤器
2017/05/15 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
代码实例ajax实现点击加载更多数据图片
2018/10/12 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
node.js使用express框架进行文件上传详解
2019/03/03 Javascript
javascript判断一个变量是数组还是对象
2019/04/10 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
js实现图片粘贴到网页
2019/12/06 Javascript
Js Snowflake(雪花算法)生成随机ID的实现方法
2020/08/26 Javascript
在Angular项目使用socket.io实现通信的方法
2021/01/05 Javascript
python登录豆瓣并发帖的方法
2015/07/08 Python
numpy排序与集合运算用法示例
2017/12/15 Python
学生信息管理系统Python面向对象版
2019/01/30 Python
python实现BP神经网络回归预测模型
2019/08/09 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Python面向对象程序设计之静态方法、类方法、属性方法原理与用法分析
2020/03/23 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
Happy Socks英国官网:购买五颜六色的袜子
2020/11/03 全球购物
党校培训自我鉴定
2014/02/01 职场文书
促销活动方案模板
2014/02/24 职场文书
实践单位评语
2014/04/26 职场文书
2014年幼儿园教学工作总结
2014/12/04 职场文书
团代会开幕词
2015/01/28 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书