闭包
时间:2010-10-15 来源:xiwang_2010
- 实例:
- function test(a,b){
-
var name='大漠穷秋';
- function test2(){
-
var myarg=name;
- }
- test2();
- }
-
test(1,2);
- 对于外层的test这个function来说,它的作用域链是这样的:
- [{},window]
- {}?{a:1, b:2,name:undefined,test2:指向test2这个function}
- 这种调用方式下this指向window
- 【注】函数的创建过程:
- 活动对象:activeObect
- Arguments对象:存储length、callee属性
- 给活动对象创建一个arguments属性,并让他指向第二步创建的arguments对象!
- 在活动对象里边创建其他属性; a,b
- 局部变量成为活动对象的属性;还有内部的函数亦如此;name,function
- 活动对象被插入到作用域链里边,插入链表的顶部;
- 若未指定this的调用对象,则永远指向window;
-
属性查找:从左向右; 执行的时候才会被赋值!
相关阅读 更多 +