继承方式之原型链继承:

今天实践了一下原型链继承,与之前也是有了更深一点的理解和体会吧。顺便写点东西,加深一下印象,有哪里说得不对的,请大家评论留言,本人一定洗耳恭听,虚心学习。

原型链继承,顾名思义,就是将一个类(父类)的实例赋值给另一个类(子类)的原型对象。
这样的话子类的实例便能够调用到父类的属性和方法。Javascript高级程序设计167页上写到:

这个例子中的 SuperType 构造函数定义了一个 colors 属性,该属性包含一个数组(引用类型值)。
SuperType 的每个实例都会有各自包含自己数组的 colors 属性。当 SubType 通过原型链继承了
SuperType 之后,SubType.prototype 就变成了 SuperType 的一个实例,因此它也拥有了一个它自
己的 colors 属性——就跟专门创建了一个 SubType.prototype.colors 属性一样。但结果是什么
呢?结果是 SubType 的所有实例都会共享这一个 colors 属性。而我们对 instance1.colors 的修改
能够通过 instance2.colors 反映出来,就已经充分证实了这一点。

说实话,可能是基础不太好,加上理解的不太透彻,我一开始认为修改子类实例原型上的所有属性的值都会产生这种影响(更改之后影响其他子类实例),毕竟子类实例的原型也是父类的实例:。但是:

实践是检验真理的唯一标准

抱着这种心态,我就试了试。好家伙,还真不行。不仅如此,它还不会报错(非严格模式);
这里也是总结了点经验吧:

通过原型继承后,修改子类实例原型上的基本属性的值是不会对其他子类实例造成影响的,只有修改引用属性的值才会。

这一点,也是和引用类型变量和基本类型变量的存储方式有关系。每次都是出问题才反应过来,不愧是我。

继承方式之原型链继承相关推荐

  1. ES6 继承(复习原型链继承)

    2019独角兽企业重金招聘Python工程师标准>>> 原型链继承 <script type="text/javascript">/* 原型链 继承 ...

  2. JavaScript简餐——继承之原型链继承

    文章目录 前言 一.实现方式 二.继承实例 三.问题所在 1.引用值误修改 2.子类型实例化时无法给父类构造函数传参 四.总结 前言 写本<JavaScript简餐>系列文章的目的是记录在 ...

  3. 浅谈原型链及原型链继承

    1.什么是原型链? JavaScript对象有一个指向一个原型对象的链.当试图访问一个对象的属性是,它不仅仅在该对象上搜寻,还会搜寻该对象的原型,以及该对象的原型的原型,依次层层向上搜索,直到找到一个 ...

  4. 继承方式一:原型链继承

    继承是OO语言中的一个最为人津津乐道的概念.许多OO语言都支持两种继承方式:接口继承和实现继承.接口继承只继承方法和签名,而实现继承则继承实际的方法.由于函数没有签名,所以在ECMAScript中无法 ...

  5. JS中对象的四种继承方式:class继承、原型链继承、构造函数继承、组合继承(构造函数和原型链继承的结合)

    前言 才发现之前没有对JavaScript中的继承做过总结,不过看得到是不少,接下来就对这几种继承方式做一下总结. class继承 class继承是ES6引入的标准的继承方式. ES6引入了class ...

  6. 构造函数 + 原型链继承 + 临摹面向对象模式的canvas动画框架

    感谢谢帅shawn分享的canvas动画框架,我再来分一次 //动画框架 http://neekey.net/blog/2011/05/11/canvas-%E7%AE%80%E5%8D%95%E5% ...

  7. JavaScript进阶学习(二)—— 基于原型链继承的js工具库的实现方法

    文章来源:小青年原创 发布时间:2016-07-03 关键词:JavaScript,原型链,jQuery类库 转载需标注本文原始地址: http://zhaomenghuan.github.io... ...

  8. Javascript 对象继承 原型链继承 对象冒充 call 混合方式

    一.原型链继承 function ClassA() {} ClassA.prototype.color = "blue"; ClassA.prototype.sayColor = ...

  9. 原型、原型链、原型链继承 理解

    原型概念: 所有对象都有一个私有的 _proto_ 属性,而这个属性所对应的就是自身的原型: 原型链概念:        所有对像都有一个私有的 _proto_ 属性,而这个属性所指向的就是原型对象, ...

最新文章

  1. Codeforces Beta Round #9 (Div. 2 Only) C. Hexadecimal's Numbers dfs
  2. 人事软件测试自学,自学软件测试什么课程
  3. 小腿训练三部曲(一)
  4. C 中 static 的常见作用
  5. 如何给PDF文件交换页面?操作方法你知道吗?
  6. 破解sourceInsight4
  7. NOIP 2016 普及组 Solution (T1-T3)
  8. PHP 三联截骨,Steel骨盆三联截骨联合手术治疗大龄儿童发育性髋关节脱位疗效观察...
  9. linux操作命令之压缩命令
  10. CSDN开发者云平台体验
  11. MVC+Echarts绘制统计图表
  12. ffdshow 源代码分析 8: 视频解码器类(TvideoCodecDec)
  13. 视频网关是什么,视频接入网关技术作用
  14. 你一定会用到的SolidWorks快捷键汇总大全
  15. 全球与中国单模连续光纤激光器市场现状及未来发展趋势
  16. IAMP方式下载邮件记录
  17. win10计算机怎么连接网络,如何创建宽带连接_win10电脑宽带连接怎么创建 - 驱动管家...
  18. Ubuntu系统下编译C语言程序
  19. 极客 android,一款开源的Android极客应用(来一起学习kotlin)
  20. 华为mate pad pro搭载鸿蒙系统,华为MatePad Pro2将全球首发预装鸿蒙OS系统

热门文章

  1. 超全Java面试知识点总结(网络、OS、JVM、并发、算法、数据库、框架。。)
  2. OpenGL 绘制螺旋线
  3. 微信小程序 下拉刷新的实现
  4. 三种方法教你开启/关闭win10系统唤醒睡眠模式时需要登录的教程
  5. 计算机原理之CPU缓存一致性
  6. 脑卒中患者如何做好康复护理?
  7. 去除chrome网站https的安全检测
  8. 完犊子!要被封了,坚持还是放弃?看你们的了
  9. android 什么叫快应用程序未安装,应用未安装什么意思
  10. 往zookeeper中写入黑名单