作家
登录

从Chrome源码看JS Object的实现

作者: 来源: 2017-04-06 11:42:17 阅读 我要评论

key); 
  •   var entry = MapFindEntry(table, numBuckets, key, hash); 
  •   if (entry !== NOT_FOUND) return ...//return代码省略 
  •   //如不雅个数大年夜于capacity的二分之一,则履行%MapGrow(this)代码略 
  •   FIXED_ARRAY_SET(tableindexkey); 
  •   FIXED_ARRAY_SET(tableindex + 1, value); 
  • 第三行添加一个log函数,确认确切是履行这里的代码。%开首的LOG,表示它是一个C++的函数,这个代码写在runtime.h和runtime.cc琅绫擎。这些JS代码最后会被组装成native code。在V8里,除了Map/Set之外,很多ES6新加的功能,都是用的JS实现的,如数组新加的很多函数。

    上文介绍了Object是若何实现的,重点分析了V8是若何存储一个Object的属性,并用了一个真正的Map作为参照。最后的结论是Object属性主如果经由过程哈希查找的,然则它不太合适拿来算作哈希Map应用,特别是当key很多并且都是字符串的时刻。

    其它的浏览器引擎可能会有不合的实现,然则至少不会笨到直接用key的字符串进行遍历。笔者将测验测验鄙人一篇介绍Array的实现,特别是分析一下它的操作函数是若何实现的。

    因为map只是一段响应大年夜小的内存空间,它的内容是空的,所以接下来要设置它的properties:

    【编辑推荐】

    1. 各大年夜排序算法的Objective-C实现以及图形化演示比较
    2. 大年夜Chrome源码看浏览器若何构建DOM树
    3. 始创企业为什么偏向于选择Swift而非Objective-C?
    4. 大年夜Chrome源码看浏览器若何layout构造
    5. 如安在五分钟内开辟一款Chrome扩大
    【义务编辑:51CTO_OS TEL:(010)68476606】

      推荐阅读

      为什么要学习R语言

    示例2 词频分析及词云 R的出生效不雅展示1992年, 肉丝 (Ross Ihaka)和 萝卜特 (Robert Gentleman)两小我在S说话(贝尔实验室开辟的一种统计用编程说话)的基本上开端构思一种新的用于统计学>>>详细阅读


    本文标题:从Chrome源码看JS Object的实现

    地址:http://www.17bianji.com/lsqh/34594.html

    关键词: 探索发现

    乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

    网友点评
    自媒体专栏

    评论

    热度

    精彩导读
    栏目ID=71的表不存在(操作类型=0)