先说一下背景,
```var n1 = 123;
var n2 = n1;
console.log(n2); // 123
n1 = 111;
console.log(n2); // 123
如上,在基本类型的复制过程中,n2会得到一个n1的副本,从而改变n1也不会影响n2的值。
然后,在复制引用类型时,由于复制的是一个指向内存地址的指针,
所以o1的修改会影响到o2
```var o1 = new Object();
var o2 = o1;
o1.name = "123";
console.log(o2.name); // 123
o1.name = "1111";
console.log(o2.name); // 1111
以上这些都没有问题,但是再复制函数引用的时候出现了问题,如下:
```var ss = function() {
console.log("ss");
}
var aa = ss;
aa(); // ss
ss = function() {
console.log("ss22");
}
aa(); // ss
这里没有明白的是,ss作为一个函数对象,并且复制给aa进行初始化,
按理来说,ss和aa是指向同一个函数对象的,但是为什么这里对ss的修改
并没有影响到aa ? 难道是因为函数对象的复制被视为基本类型的复制?
还是有其他什么原因? 求教