• 高性能Js—数据存取


    数据存取

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

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

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

    作用域

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

    原型

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

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

  • 相关阅读:
    delphi 使用条件编译指令
    [转] 编程之道 二
    delphi中XLSReadWrite控件的使用(1)简介
    delphi中XLSReadWrite控件的使用(2)delphi XE下安装
    墙纸自动换1.4算法分析
    Delphi中设置屏幕分辨率
    delphistringgrid另类自动向下滚屏
    【Hex 格式文件操作】一、intel hex格式文件说明
    INTEL hex文件格式
    [转]编程之道 一
  • 原文地址:https://www.cnblogs.com/yehui-mmd/p/7397915.html
Copyright © 2020-2023  润新知