* 數據類型在內存中的存儲:
1. 基本數據類型(Number、String、Boolean、Null、undefined、Symbol)存儲在棧內存中
2. 引用數據類型對象的地址存儲在棧內存中,對象存儲在堆中
* 淺拷貝
```
// 1. Object.assign
function copy(obj) {
return Object.assign({}, obj);
}
// 2. ...展開運算符
function copy(obj){
return {...obj};
}
```
* 深拷貝
```
function copy(obj) {
if (obj === null) return null;
if(obj.constructor !== Object) return obj;
if(obj.constructor === Date) return new Date(obj);
if(obj.constructor === RegExp) return new RegExp(obj);
var newObj = new obj.constructor(); //保持繼承的原型
for(var key in obj){
if(obj.hasOwnProperty(key)){
var val = obj[key];
newObj[key] = typeof val === 'object' ? arguments.callee(val):val;
}
}
return newObj;
}
```