zoukankan      html  css  js  c++  java
  • 高性能Javascript 数据访问读书笔记

    数据的存储位置决定获取最佳的读写效率

    直接量(字符串,数字,布尔值、对象、数组、函数、正则表达式,特殊的null,undefined)、变量     很快

    数组元素 以数字索引

    对象  字符串索引

    管理作用域链

    Scope      影响性能和功能

    this的指向,函数能访问到的变量

    作用域的工作原理

    function 即一个对象,即Function 对象的一个实例   

    有一些可编辑的属性,还有一些供引擎存取的内部属性,其中一个属性是Scope

    Scope   包含了一个函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,确定哪些数据能被函数访问,每个对象都被称为一个可变对象,以键值对形式存在,函数被创建时,会被创建此函数的作用域中的访问的数据对象所填充。

    执行函数时会创建一个称为运行期上下文executing context的内部对象   一个运行期上下文定义了一个函数执行时的环境,函数每次执行时对应的运行期上下文都是独一无二的,所以多次调用同一个函数会创建多个运行期上下文,函数执行完毕,执行期上下文就被销毁。

    每个运行期上下文都有自己的作用域链,用于标识符解析,

    运行期上下文的创建进程:

    初始化为当前运行函数的Scope属性中所包含的对象,按照它们出现在函数中的顺序,被复制到上下文的作用域链中,一个被称为活动对象activation object的新对象就为执行期上下文创建好了,它包含了所有局部变量,命名参数,参数集合,以及this,此对象被插入作用域的,

    每遇到一个变量,都会以历一次标识符解析过程以决定从哪里获或存数据,

    标识符解析的性能

    一个标识符所在的位置越深,读写速度就越慢,

    读写局部变量是最快的,

    读写全局变量是最慢的,它位于运行期上下文的最未端,

    总结: 尽可能的使用局部变量,一个多次被引用的全局变量,可以用局部变量先得到

     

  • 相关阅读:
    时间戳(1532249295.179) 转日期格式(2018/07/22 16:48:15 179)
    iscroll.js右侧可滑动的菜单,点击每个菜单都会出现本菜单的详情
    canvas绘制的文字如何换行
    移动端H5页面禁止长按复制和去掉点击时高亮
    一列宽度不缩放,一列宽度弹性缩放,且超出后显示省略号
    js钩子机制(hook)
    mCustomScrollbar.js 漂亮的滚动条插件 适应内容自动更新
    axios.js 实例 -----$.ajax的替代方案
    用 async/await 来处理异步实例
    C#入门经典第18章-WEB编程
  • 原文地址:https://www.cnblogs.com/yushunwu/p/2174249.html
Copyright © 2011-2022 走看看