// 实现原型链的基本模式
function Super() {this.value = 'Super';this.color = ["red", "blue", "green"];
}Super.prototype.getSuperValue = function () {return this.value;
}function Sub() {this.a = 'a'this.subValue = 'Sub';
}
Sub.prototype = new Super();
Sub.prototype.getSubValue = function () {return this.subValue;
}
var subObj1 = new Sub();
subObj1.subValue = 'subObj1'
console.log(subObj1.getSubValue());//subObj1
console.log(subObj1.getSuperValue());//Super
console.log(subObj1.a);//a
subObj1.a = 'subObj1a';
console.log(subObj1.a);//subObj1asubObj1.color.push('pink');
console.log(Sub.prototype.color);//[ 'red', 'blue', 'green', 'pink' ]
console.log(subObj1.color);//[ 'red', 'blue', 'green', 'pink' ]subObj1.color = ['a', 'b'];
console.log(Sub.prototype.color);//[ 'red', 'blue', 'green', 'pink' ]
console.log(subObj1.color);//['a', 'b']
subObj1.color.push('c');//子类自己有了color,就不会去找原型的color了,所以这时候更改的是实例自己的color
console.log(Sub.prototype.color);//[ 'red', 'blue', 'green', 'pink' ]
console.log(subObj1.color);//[ 'a', 'b', 'c' ]var subObj2 = new Sub();
console.log(subObj2.getSubValue());//Sub
console.log(subObj2.getSuperValue());//Super
console.log(subObj2.a);//aSub.prototype.value = 'hello world';
console.log(subObj1.getSuperValue());//hello world
console.log(subObj2.getSuperValue());//hello world
console.log(Sub.prototype.color);//[ 'red', 'blue', 'green', 'pink' ]
console.log(subObj2.color);//[ 'red', 'blue', 'green', 'pink' ]

1.每个实例单独保存构造函数的变量,互不影响
2.同类型的实例共同拥有原型拥有的变量,只要原型的指向不变,修改其中的某一变量
所有实例的该变量值都会对应修改,即互相影响
3.读取某一实例的变量,先读实例有没有,没有才会去原型链上找
4.所有函数的默认原型都是Object的实例
5.如果原型中包含引用类型值,则通过实例可以更改这个引用值,而不是常规的->构造函数名.prototype.引用类型变量

javaScript原型链继承相关推荐

  1. javascript 原型链继承

    JavaScript中没有类的概念,只有一个构造函数来创建对象. 但是JavaScript也可以实现继承. 首先要说的是,JavaScript中的对象分为函数对象和普通对象. 何为函数对象?? 就是 ...

  2. JavaScript: 原型链继承(原理解析 + 代码实现 + 结构图解)

    文章目录 一 原型搜索机制 1.1 代码实现 1.2 结构图解 1.3 搜索机制 二 原型链代码实现 2.1 代码实现 2.2 结构图解 2.3 链条拓展 三 原型链的缺点 原型链是实现继承的一种方式 ...

  3. 图解JavaScript原型链继承

    JavaScript是基于原型链的继承的,忘掉类的继承,从原型链入手. 普通对象 函数对象 JavaScrip只有一种结构:对象 通过new Function()创建的对象都是函数对象,其他都是普通对 ...

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

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

  5. JavaScript原型链污染攻击

    前言 最近在看js的时候看到p神的一篇关于js原型链污染的文章,学习一下. 下面转自p神:深入理解 JavaScript Prototype 污染攻击 还有一篇案例关于js原型链污染的ctf题:从一道 ...

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

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

  7. JavaScript 原型链和继承面试题

    JavaScript 原型链和继承问题 JavaScript 中没有类的概念的,主要通过原型链来实现继承.通常情况下,继承意味着复制操作,然而 JavaScript默认并不会复制对象的属性,相反,Ja ...

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

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

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

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

  10. javascript原型链中 this 的指向

    为了弄清楚Javascript原型链中的this指向问题,我写了个代码来测试: var d = {d: 40};var a = {x: 10,calculate: function (z) {retu ...

最新文章

  1. SpringBoot+flowable快速实现工作流,so easy!
  2. linux文件传输常用方法
  3. 推荐系统相关资源汇总
  4. python计算速度_python中如何提高计算速度?
  5. Jupyter notebook增加新的kernel
  6. [转]hexo 博客开启 https (SSL 证书)
  7. 在C++Builder2010中配置OpenCV2.2
  8. 编码:unicode、utf-8以及emoji
  9. CF 504E Misha and LCP on Tree——后缀数组+树链剖分
  10. iOS项目内购(IAP)纯代码
  11. vmplayer下管理网络
  12. HART协议数据格式和消息结构的举例分析
  13. Delta并联机构在ADAMS仿真中的运动副设置
  14. excel取整数的函数_EXCEL的知识考点
  15. 编程程序 runtime error
  16. 电脑取消撤销快捷键是什么_电脑撤销快捷键是什么?这个万能快捷键适合各种电脑软件...
  17. 线性回归(Linear regression)算法
  18. 最新配资系统源码完美运行版+策略买点/A股系统
  19. 持续更新就是给软件上医保
  20. MATLAB中能对三角函数降幂嘛,初中数学三角函数降幂公式

热门文章

  1. Julia : 又一次 ”协变“ 中招!
  2. Juno: 字体缩放
  3. Julia:和Julia相关的经济学网站 和初学者网站
  4. 阿里云原生“因云而生”心智大图重磅发布
  5. 将公共云延伸至本地,阿里云推出本地化部署服务云盒Cloud Box
  6. 学会c对java帮助大_20155206赵飞技能获取经验,C语言学习感想与对JAVA的学习目标...
  7. php 判断来源 微信客户端_常见WebShell客户端的流量特征及检测思路
  8. 【花式】基于matlab花圣诞树【含Matlab源码 001期】
  9. 合振动的初相位推导_如何理解单自由度系统振动
  10. fastreport按条件查询_查询代价的