let a = {
age: undefined,sex: Symbol('male'),jobs: function() {},name: 'yck'
}
let b = JSON.parse(JSON.stringify(a))
console.log(b) // {name: "yck"}
var channel = new MessageChannel();
channel.port1
channel.port2
deepClone(val) {
return new Promise((resolve,reject) => {
const {port1,port2} = MessageChannel();
port2.onmessage = e => resolve(e.data);
port1.postMessage(val);
})
}
let obj =,c: {
d: true
}
}
obj.c.e = obj.c; 循环引用
注意该方法是异步
async test() {
const clone = await deepClone(obj);
console.log(clone) {age: undefined,name: "yck",c: {…}}
}
test()
var extendCopy = ( f(p,c){
var c = c || {};
for (var i in p) {
if(typeof p[i] === 'object'){
c[i] = (p[i] instanceof Array) ? [] : {};
f(p[i],c[i]);
}else{
c[i] = p[i];
}
}
return c;
});
var objects = [{ 'a': 1 },{ 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
=> false