数据存取

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

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

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

作用域

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

原型

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

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

最新文章

  1. 报表或BI的价值在哪?
  2. 使用jQuery封装实用函数
  3. T-SQL:毕业生出门需知系列(二)
  4. 预写式日志(Write-Ahead Logging (WAL))
  5. iOS关于打包出错
  6. java 类从哪个jar包加载的
  7. delphi 反射(原理)
  8. 在CentOS 7中轻松安装Atomic应用(atomicapp)
  9. ORACLE 索引概述
  10. java使用ObjectInputStream从文件中读取对象
  11. GDOI2015——已成梦
  12. Flexigrid去掉列选择
  13. mybatis配置多数据源(利用spring的AbstractRoutingDataSource)
  14. Java HotSpot(TM) 64-Bit Server VM warning
  15. 读书笔记--《编写高质量代码:改善Python程序的91个建议》
  16. 结对编程core_6
  17. react-01
  18. 小程序模板template
  19. JEECG新版UI规划,主要提供H5方案(采用主流技术)
  20. 交叉编译环境以及开发板上-/bin/sh: ./hello: not found 转载自 http://blankboy.72pines.com

热门文章

  1. Google 翻译如何获取 tk 参数值?
  2. 2、Python request、BeautifulSoup(download mm_pic)
  3. golang安装环境变量配置和beegoan安装
  4. 爬虫二 requests模块的使用
  5. 剑指offer 面试15题
  6. More about Parameter Passing in Python(Mainly about list)
  7. C#将图片白色背景设置为透明
  8. 【转】Linux rpm 安装卸载操作
  9. UI控件之UIView与动画
  10. 嵌入式boa服务器移植