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也会修改。
浙公网安备 33010602011771号