hasOwnProperty ()方法可以用来对象是否有特定的属性,而且该方法会忽略掉那些从原型链上继承到的属性
https://www.cnblogs.com/echolun/p/7889848.html
深度拷贝方法三种:
方法一:
深度拷贝函数:
function deepClone(obj){
var objClone = Array.isArray(obj) ? [] : {};
for(key in obj){
if(obj.hasOwnProperty(key)){
if(obj[key] && typeof obj[key] == "object"){
objClone[key] = deepClone(obj[key]);
}else{
objClone[key] = obj[key];
}
}
}
return objClone;
}
var data = [
{
name:"xiao"
},
{
age:"22"
}
];
var newData = deepClone(data);
data[0] = "第三个";
console.log(data,newData);
方法二
JSON.stringfy()、JSON.parse()组合
function deep(){
let _obj = JSON.stringify(obj);
let newobj = JSON.parse(_obj);
return newobj;
}
let obj = [1,2,[3,4],5];
let b = deep(obj);
obj[0] = 0;
console.log(obj,b)
方法三:jquery中的extends方法
let a=[0,1,[2,3],4],
b=$.extend(true,[],a);
a[0]=1;
a[2][0]=1;
console.log(a,b);
网友评论