javascript 数组 prototype疑问

今天在编码时,遇到一个问题,特记录下。

var test=(function() { var arr2=[1,2,3,3]; return function(){ return arr2; }; })() 
Array.prototype.f1= function () { return []; } 
Array.prototype.f2= function () { this.length=0; return this; }   
然后用两种方式调用:
一:
var arr= test();
console.log(arr.length);结果是4
arr.f1();
arr= test();
console.log(arr.length);结果是4
这个好理解;

二:
var arr= test();
console.log(arr.length);结果是4
arr.f2();
arr= test();
console.log(arr.length);结果是0
不知道为什么会这样,难道arr.f2()可以修改test函数中闭包中的arr2;

 

posted @ 2010-12-28 23:20  oneroom  阅读(178)  评论(0编辑  收藏  举报
让别人快乐是慈悲,让自己快乐是智慧!