高性能Javascript 数据访问读书笔记
2011-09-12 22:27
239 查看
数据的存储位置决定获取最佳的读写效率
直接量(字符串,数字,布尔值、对象、数组、函数、正则表达式,特殊的null,undefined)、变量 很快
数组元素 以数字索引
对象 字符串索引
[b]管理作用域链[/b]
[b]Scope 影响性能和功能[/b]
this的指向,函数能访问到的变量
作用域的工作原理
function 即一个对象,即Function 对象的一个实例
有一些可编辑的属性,还有一些供引擎存取的内部属性,其中一个属性是[b]Scope[/b]
Scope 包含了一个函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,确定哪些数据能被函数访问,每个对象都被称为一个可变对象,以键值对形式存在,函数被创建时,会被创建此函数的作用域中的访问的数据对象所填充。
执行函数时会创建一个称为[b]运行期上下文executing context的内部对象[/b] 一个运行期上下文定义了一个函数执行时的环境,函数每次执行时对应的运行期上下文都是独一无二的,所以多次调用同一个函数会创建多个运行期上下文,函数执行完毕,执行期上下文就被销毁。
每个运行期上下文都有自己的作用域链,用于标识符解析,
运行期上下文的创建进程:
初始化为当前运行函数的Scope属性中所包含的对象,按照它们出现在函数中的顺序,被复制到上下文的作用域链中,一个被称为活动对象activation object的新对象就为执行期上下文创建好了,它包含了所有局部变量,命名参数,参数集合,以及this,此对象被插入作用域的,
每遇到一个变量,都会以历一次标识符解析过程以决定从哪里获或存数据,
[b]标识符解析的性能[/b]
一个标识符所在的位置越深,读写速度就越慢,
读写局部变量是最快的,
读写全局变量是最慢的,它位于运行期上下文的最未端,
[b]总结: 尽可能的使用局部变量,一个多次被引用的全局变量,可以用局部变量先得到[/b]
直接量(字符串,数字,布尔值、对象、数组、函数、正则表达式,特殊的null,undefined)、变量 很快
数组元素 以数字索引
对象 字符串索引
[b]管理作用域链[/b]
[b]Scope 影响性能和功能[/b]
this的指向,函数能访问到的变量
作用域的工作原理
function 即一个对象,即Function 对象的一个实例
有一些可编辑的属性,还有一些供引擎存取的内部属性,其中一个属性是[b]Scope[/b]
Scope 包含了一个函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,确定哪些数据能被函数访问,每个对象都被称为一个可变对象,以键值对形式存在,函数被创建时,会被创建此函数的作用域中的访问的数据对象所填充。
执行函数时会创建一个称为[b]运行期上下文executing context的内部对象[/b] 一个运行期上下文定义了一个函数执行时的环境,函数每次执行时对应的运行期上下文都是独一无二的,所以多次调用同一个函数会创建多个运行期上下文,函数执行完毕,执行期上下文就被销毁。
每个运行期上下文都有自己的作用域链,用于标识符解析,
运行期上下文的创建进程:
初始化为当前运行函数的Scope属性中所包含的对象,按照它们出现在函数中的顺序,被复制到上下文的作用域链中,一个被称为活动对象activation object的新对象就为执行期上下文创建好了,它包含了所有局部变量,命名参数,参数集合,以及this,此对象被插入作用域的,
每遇到一个变量,都会以历一次标识符解析过程以决定从哪里获或存数据,
[b]标识符解析的性能[/b]
一个标识符所在的位置越深,读写速度就越慢,
读写局部变量是最快的,
读写全局变量是最慢的,它位于运行期上下文的最未端,
[b]总结: 尽可能的使用局部变量,一个多次被引用的全局变量,可以用局部变量先得到[/b]
相关文章推荐
- 《高性能javascript》读书笔记:第二章 数据访问
- 《高性能javascript》读书笔记:P1减少跨作用域的变量访问
- 【读书笔记】【C++】类外访问私有数据成员的两种方式
- 《C#入门经典v6》读书笔记4 数据访问
- 《Effective C#》读书笔记——条目1:使用属性而不是可访问的数据成员<C#语言习惯>
- 高性能javascript(第二章 数据访问)
- [读书笔记]高性能js-数据访问
- 【读书笔记】【深入理解ES6】#5-解构:使数据访问更便捷
- Effective Java 读书笔记——66:同步访问共享的可变数据
- 【读书笔记】Android访问远程数据的步骤(Messenger、AIDL、ContentProvider
- 高性能Javascript【二】数据访问
- Spark SQL读取Hive数据配置及使用Thrift JDBC/ODBC Server访问Spark SQL
- 数据访问部分的类层次
- SQL Server 定时访问url激活数据同步
- 在vue中使用jsonp跨域访问数据
- Access 通用数据访问类(asp.net 2.0 c#)
- SharePoint服务器端对象模型 之 访问网站和列表数据(Part 1)
- 【C#高效编程50例】条目1:使用属性而不是可访问的数据成员
- C++的const类成员函数(解释为什么非const成员函数不能访问const对象的数据成员)
- [李景山php] 深入理解PHP内核[读书笔记]--第三章:变量及数据类型--简略