老生常谈 关于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的ready()方法单独使用示例
Mar 25 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
js 动态为textbox添加下拉框数据源的方法
Apr 24 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
Aug 17 Javascript
详解webpack+es6+angular1.x项目构建
May 02 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
May 11 Javascript
JS轮播图实现简单代码
Feb 19 Javascript
(模仿京东用户注册)用JQuery实现简单表单验证,初学者必看
Jan 08 jQuery
vuejs实现递归树型菜单组件
Jan 13 Javascript
Vue2.0用户权限控制解决方案的示例
Feb 10 Javascript
详解使用WebPack搭建React开发环境
Aug 06 Javascript
vue动态渲染svg、添加点击事件的实现
Mar 13 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
深入解析php模板技术原理【一】
2008/01/10 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
php随机显示图片的简单示例
2014/02/15 PHP
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php中序列化与反序列化详解
2017/02/13 PHP
把html页面的部分内容保存成新的html文件的jquery代码
2009/11/12 Javascript
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
js对象继承之原型链继承实例
2015/01/10 Javascript
Javascript基础教程之数据类型转换
2015/01/18 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
基于代数方程库Algebra.js解二元一次方程功能示例
2017/06/09 Javascript
深入研究React中setState源码
2017/11/17 Javascript
create-react-app修改为多页面支持的方法
2018/05/17 Javascript
vue拖拽组件使用方法详解
2018/12/01 Javascript
vue下载excel的实现代码后台用post方法
2019/05/10 Javascript
从零搭一个自用的前端脚手架的方法步骤
2019/09/23 Javascript
24个ES6方法解决JS实际开发问题(小结)
2020/05/31 Javascript
react的hooks的用法详解
2020/10/12 Javascript
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
python异步存储数据详解
2019/03/19 Python
Python响应对象text属性乱码解决方案
2020/03/31 Python
雅诗兰黛加拿大官网:Estee Lauder加拿大
2019/07/31 全球购物
Michael Kors英国官网:美国奢侈品品牌
2019/11/13 全球购物
请编写一个 C 函数,该函数在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值
2014/09/15 面试题
经典c++面试题五
2014/12/17 面试题
幼儿园亲子活动方案
2014/01/29 职场文书
运动会邀请函范文
2014/01/31 职场文书
小学生植树节活动总结
2014/07/04 职场文书
语文复习计划
2015/01/19 职场文书
医生个人年终总结
2015/02/28 职场文书
敬老院活动感想
2015/08/07 职场文书
课程设计感想范文
2015/08/11 职场文书
前端JavaScript大管家 package.json
2021/11/02 Javascript
Python使用socket去实现TCP客户端和TCP服务端
2022/04/12 Python