专栏首页性能与架构图解JavaScript原型链

图解JavaScript原型链

假设父类 parentScope 有如下成员属性 : aString, aNumber, anArray, anObject 子类 childScope 继承父类 parentScope,现在的原型链结构如下

如果 childScope 尝试去访问 parentScope 中定义的属性,JavaScript 会先在 childScope 中查找,如果没有该属性,则找它继承的 scope 去获取属性,如果继承的原型对象 parentScope中都没有该属性,那么继续在它的原型中寻找,从原型链一直往上直到到达 rootScope 执行下面的语句 childScope.aString = 'child string' 原型链并没有被查询,反而是在 childScope 中增加了一个新属性 aString。这个新属性覆盖了 parentScope 中的同名属性

执行操作: childScope.anArray[1] = '22' childScope.anObject.key1 = 'child prop1' 这时 原型链被查询了,因为对象 anArray 和 anObject 在 childScope 中没有找到,它们在 parentScope 中被找到了,并且值被更新,childScope 中没有增加新的属性,也没有任何新的对象被创建

注意,这个操作是修改属性内部的值,而不是直接给属性赋值,所以不会在子scope中添加属性

执行操作: childScope.anArray = [100, 555] childScope.anObject = { name: 'Mark', country: 'USA' } 这时 原型链没有被查询,并且子 Scope 新加入了两个新的对象属性,它们覆盖了 parentScope 中的同名对象属性

本文分享自微信公众号 - 性能与架构(yogoup),作者:杜亦舒

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2015-11-03

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 什么是 CSS 预处理器 与 后处理器

    CSS处理器是做什么的? CSS本身不是编程语言,所以在项目越来越大时,开发和维护就会越来越复杂 CSS处理器做的事情 就是帮助我们提高大规模开发时的效率 CS...

    dys
  • JS this指针的理解

    this是javascript的一个关键字,也是比较容易令人迷糊的一个概念 this的本质:当前对象的所有者 示例1 var x = 1; function t...

    dys
  • Nginx 配置文件安全分析

    简介 Gixy 是一个 Nginx 配置文件的分析工具,主要目标是防止由于不当的配置带来的安全问题 Gixy 是进行静态分析,只需要指定配置文件的路径,不需要启...

    dys
  • Java之多态

    在java程序设计中,对象变量是多态的,多态是同一个行为具有多个不同表现形式或形态的能力。

    用户5224393
  • 干货|6款数据挖掘工具,让你的工作效率UP!

    工欲善其事,必先利其器。踏入大数据时代,你的“工具”跟上时代了吗?在数据挖掘过程中,有大量的工具可供使用,比如采用人工智能、机器学习,以及其他技术等来提取数据...

    灯塔大数据
  • java后端开发面经_数据库相关

    你答:有这样一个故事,讲的是一个小男孩和一个小女孩,这个小男孩呢,用很多好玩石头,而这个小女孩呢,有好多好吃的糖果,有一天,他们相互约定:小男孩用所有的石头交互...

    用户6055494
  • Windows之注册表操作命令

    描述:reg命令是WindowsXP提供的,它可以添加、更改和显示注册表项中的注册表子项信息和值,以及导入导出注册表项.

    WeiyiGeek
  • 利用WCF改进文件流传输的三种方式

    WCF在跨域传输使用了两种模型的方法调用:一种是同步模型,这种模型显然对那些需要大量操作时间的方法调用(如从数据库中获取大量数据时)是一种痛苦的选择。另一种是异...

    岑玉海
  • React Native 与 OC 之间通信那些事儿

    React Native 用 IOS 自带的 JavaScriptCore 作为 JS 的解析引擎,普通的 JS-OC 通信就是 React Native 在...

    腾讯IVWEB团队
  • Java内存大家都知道,但你知道要怎么管理Java内存吗?

    你可能会思考,如果你使用Java编程,关于内存如何工作你需要了解哪些哪些信息?Java可以进行自动内存管理,而且有一个很好的、安静的垃圾回收器,它在后台工作,清...

    程序员追风

扫码关注云+社区

领取腾讯云代金券