js 函数的定义内存分配

             function fn1(){alert("#####")}  // 这里需要明确的是,函数一个特殊的对象。是一个function类的实例。在内存中是通过键值对存储的。

             var fn2 = fn1(alert("#####"));  // 由于函数是一个对象,我们就可以通过这样的方式来定义。

fn1 function(){}
fn2 function(){}

如图:再次定义的fn2 同样也会指向function(){alert("######")};但是在js中会拷贝一个function让fn2指向它。这个也是js中函数和对象的区别   

 这个时候调用fn2();  //"######"

如果现在  fn1 = fucntion(alert(“----------”));

           fn2()//"######"

    fn1()//"--------";

对象是通过函数的引用的指向完成赋值,而函数却是通过对象的拷贝完成.所以这个时候虽然fn1变了,但是并不会影响fn2

var o1 = new Object();

var o2 = o1;

02.name="test";

alert(o1.name); //test;  // 这里的 o1和o2就是指向的同一块空间当修改o1的时候。o2的指向也是它。所以o1也会修改。

 

 

         

posted on 2013-07-01 11:29  菜鸟半只  阅读(474)  评论(0)    收藏  举报

导航