首页 > 编程语言 > 详细

JavaScript的数据访问

时间:2015-12-21 15:42:39      阅读:164      评论:0      收藏:0      [点我收藏+]

1. js四种基本的数据存储位置:

   1) 直接量: 只代表本身,不存储在特定位置(字符串, 数字, 布尔值, 对象, 数组, 函数, 正则表达式, null, undifined)

   2) 变量: 用关键字var定义的数据存储单元

   3) 数组元素: 存储在js数组对象内部, 以数字作为索引.

   4) 对象成员: 存储在js数组对象内部, 以字符串作为索引.

   性能方面取决于浏览器分别对这四种数据存储位置进行200000次操作所用的时间. 直接量和局部变量的访问速度快于数组项和对象成员的访问速度

2. 管理作用域(比如确定那些变量可以被函数访问, 确定this的赋值)

   1) 作用域链和标识符解析

       内部属性[Scope]:包含了一个函数被创建的作用域中对象的集合. 这个集合被称为函数的作用域链,决定了那些数据能被函数访问.

       执行函数时会创建一个成为‘运行上下文‘的内部对象, 每个运行期上下文都有自己的作用域链,用于标识符解析.

   2) 标识符解析的性能

       一个标识符所在的位置越深,它的读写速度就越慢.函数中读写局部变量是最快的,读写全局变量(总是处于运行期上下文作用域链的最末端)是最慢的(Chrome和Safari 4 不会出现这种问题).

       跨作用域的值(如document)在函数中被引用一次以上,  那么就把它存储到局部变量里.

   3) 改变作用域链

       with语句用来给对象的所有属性创建一个变量. (实际功能用来避免书写重复代码),但是访问布局变量变慢了

       try-catch,在catch代码块内部,函数所有局部变量将会放在第二个作用域链对象中.但他不是用来解决js错误的.

   4) 动态作用域(只有确实有必要时再用)

       with

       try-catch

       eval()函数,可计算某个字符串,并执行其中的的 JavaScript 代码。

   5) 闭包, 作用域和内存

       闭包: 允许函数访问布局作用域之外的数据.

 

JavaScript的数据访问

原文:http://www.cnblogs.com/floraCnblogs/p/js-data-access.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!