闭包

  1. 实例: 
  2. function test(a,b){ 
  3.    var name='大漠穷秋';
  4.    function test2(){ 
  5.      var myarg=name
  6.    } 
  7.    test2(); 
  8. test(1,2); 
  9. 对于外层的test这个function来说,它的作用域链是这样的: 
  10. [{},window] 
  11. {}?{a:1, b:2,name:undefined,test2:指向test2这个function} 
  12.  
  13. 这种调用方式下this指向window 
  14. 【注】函数的创建过程: 
  15. 活动对象:activeObect 
  16. Arguments对象:存储length、callee属性 
  17. 给活动对象创建一个arguments属性,并让他指向第二步创建的arguments对象! 
  18. 在活动对象里边创建其他属性;   a,b 
  19. 局部变量成为活动对象的属性;还有内部的函数亦如此;name,function 
  20. 活动对象被插入到作用域链里边,插入链表的顶部; 
  21. 若未指定this的调用对象,则永远指向window; 
  22. 属性查找:从左向右; 执行的时候才会被赋值! 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章