深拷贝:把一个对象里面的东西一模一样地复制到另一个对象,并且这两个对象分别放在内存的不同地方
对象
//方法一
function cloneObject(obj){
var o = obj.constructor === Array ? [] : {};
for(var i in obj){
if(obj.hasOwnProperty(i)){
o[i] = typeof obj[i] === "object" ? cloneObject(obj[i]) : obj[i];
}
}
return o;
}
//方法二
var obj = {
a:'111'
}
var o = JSON.stringify(obj);
o = JSON.parse(o)
o.a='222';
console.log(o) //Object {a: "222"}
console.log(obj) //Object {a: "111"}
使用JSON.stringify()来过滤并序列化对象
// 1. 使用函数过滤
var user = {
name: 'tom',
age: 19,
skills: 'js',
};
function replacer(key, value) {
if (typeof value === "string") {
return undefined;
}
return value; // 返回值不是字符串的属性
}
// -------
{
"age": 19
}
// 2. 使用数组过滤
var user = {
name: 'tom',
age: 19,
skills: ['js', 'css', 'html'],
};
JSON.stringify(user, ['name', 'skills']) // "{"name":"tom","skills":["js","css","html"]}"
JSON.stringify(user, ['name', 'skills'], 2)
//------
{
"name": "tom",
"skills": [
"js",
"css",
"html"
]
}
简单数组
var arr = [1,2,3];
var arr1 = arr.concat();
//或者
arr1 = arr.slice();