数据存取

JavaScript中四中基本的数据存取位置

  • 字面量:不存于某个变量内
  • 本地变量:var定义的
  • 数组元素
  • 对象成员

字面量、全局变量读取速度 > 数组项、对象成员 。因为局部变量存在于作用域链的起始位置

作用域

  • 作用域链
    函数创建——作用域中的scope属性(内部属性对象)——集合——作用域链(即函数创建后,内部的可访问数据对象在访问时填充而成)
  • 标识符解析
    对变量在作用域中的搜索过程。在执行环境的作用域链中,一个标识符所在的位置越深,读取速度越慢。全局变量总存在于作用域链的某端。
  • 少用动态作用域
    with、try catch等,会导致js引擎的自身优化性能失效。
  • 闭包:可以访问另一个函数中数据的函数。
    可能导致性能问题:需要更多的内存开销,因为函数在调用时,会创建一个scope属性对象的活动对象,而这个对象包含了执行环境中活动对象的所有属性和方法,相当于是执行环境中活动对象的一个副本,所以在执行环境执行完后他不会被销毁,造成内存消耗,内存泄漏
    解决:将常用的跨作用域的变量存储在局部变量中,直接访问 局部变量,这减轻了闭包的影响。

原型

  • 概念:原型是其他对象的基础,定义了实现新创建的对象所必须包含的成员列表。
  • 对象成员类型:
    实例成员
    原型成员:自动拥有 <——原型对象
  • 原型链:创建一个对象,在使用该对象某些属性时,需要遍历他的原型对象的属性,或是他父级的一些属性或方时,形成一个链条。用来实现JS中的继承。
  • 嵌套成员变量尽量少用。(嵌套越深,读取速度越慢)

原型链越深,读取速度越慢,越大;
解决:缓存对象成员值——> 保存到局部变量。

高性能Js—数据存取的更多相关文章

  1. 高性能JS笔记2——数据存取

    数据存取性能而言: 字面量>本地变量>数组元素>对象成员 一.标识符解析的性能 标识符解析是有代价的,一个标识符的位置越深,它的读写速度也就越慢. 局部变量的读写速度是最快的,全局变 ...

  2. 高性能JavaScript(数据存取)

    数据存取分为4各部分 存取位置 作用域及改变作用域 原型以及原型链 缓存对象成员值 存取位置 JavaScript 有4中基本的数据存取位置 字面量:字面量代表自身,不存于特定的位置.比如这个的匿名函 ...

  3. 《高性能js》读书笔记

    第一章:加载和执行 .浏览器的JavaScript的引擎是编译器层的优化: .当浏览器执行JavaScript代码时,不能同时做其他任何事情(单一进程),意味着 .主流浏览器都允许并行下载JS. .减 ...

  4. JavaScript数据存取的性能问题

    JavaScript中四种基本的数据存取位置: 字面量:只代表自身 字符串.数字.布尔值.对象.函数.数组.正则,以及null和undefined    快 本地变量:var定义的    快 数组元素 ...

  5. JS 数据类型转换

    JS 数据类型转换 方法主要有三种 转换函数.强制类型转换.利用js变量弱类型转换. 1. 转换函数: js提供了parseInt()和parseFloat()两个转换函数.前者把值转换成整数,后者把 ...

  6. Hyperledger中数据存取的实现

    简介 本文介绍了在Hyperledger中数据存取的实现. API接口 Hyperledger提供基于key/value的数据存储,其中key是字符串,value则是二进制字节数组,Hyperledg ...

  7. HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较

    摘要:   在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出此办法的性能是不能满足应用要求的,很显然对于如此成熟的HBase来说,高性能获取数据应该不是问题. ...

  8. 一个自定义 HBase Filter -“通过RowKeys来高性能获取数据”

    摘要: 大家在使用HBase和Solr搭建系统中经常遇到的一个问题就是:“我通过SOLR得到了RowKeys后,该怎样去HBase上取数据”.使用现有的Filter性能差劲,网上也没有现成的自定义Fi ...

  9. HBase 高性能加入数据 - 按批多“粮仓”式解决办法

    摘要:如何从HBase中的海量数据中,以很快的速度的获取大批量数据,这一议题已经在<HBase 高性能获取数据>(http://www.cnblogs.com/wgp13x/p/42451 ...

随机推荐

  1. 洛谷 P1407 [国家集训队]稳定婚姻

    洛谷 这个题面很有意思,像我这样的菜鸡,完全不需考虑婚姻的稳定 性 问题. tarjan裸题,直接讲算法吧: 原配夫妻之间分别连一条边,小情人之间反向连边. 这时候我们会发现一个性质,如果婚姻稳定,那 ...

  2. django startapp报 maximum recursion depth exceeded

    报错截图如下: 解决办法:修改指定路径下的functools.py文件的def total_ordering(cls):方法: 原来的样子: convert = { '__lt__': [('__gt ...

  3. word中插入的代码库设置局部背景色

    https://zhidao.baidu.com/question/1494951482361210539.html

  4. centos系统时间相差8个小时解决方案

    查看当前系统时间 [root@centos64 ~]# date 查看硬件时间 [root@centos64 ~]# hwclock --show 同步时间可以用:ntpdate us.pool.nt ...

  5. PyQt4 颜色选择,字体选择代码

    # -*- coding: utf-8 -*- """ ------------------------------------------------- File Na ...

  6. C51数据类型

  7. $ python正则表达式系列(1)——正则元字符

    本文主要介绍python中正则表达式的基本用法,做一个初步的认识. 1. 初识 python通过re内置模块来处理正则表达式(regex),底层使用C引擎.一个简单的正则匹配的例子: import r ...

  8. PPA(Personal Package Archives)简介、兴起、使用

    1.简介 PPA是Personal Package Archives,个人软件包文档,是默认情况下并未被包含在Ubuntu中的软件的一个集合.通常这些存储库的侧重点是单个的程序,不过他们也可以包含更多 ...

  9. [转]u盘读不出来怎么办大汇总

    今天遇到的问题 http://www.upantool.com/jiaocheng/xiufu/2016/9958.html u盘读不出来怎么办大汇总 2016-12-14 21:42 来源: 本站整 ...

  10. 【Flask】Sqlalchemy limit, offset slice操作

    ### limit.offset和切片操作:1. limit:可以限制每次查询的时候只查询几条数据.2. offset:可以限制查找数据的时候过滤掉前面多少条.3. 切片:可以对Query对象使用切片 ...