區別:
深淺拷貝主要的區別的拷貝的層級不同,淺拷貝拷貝的是一層不包括裏面的引用數據類型,深拷貝的是多層
實現方式:淺
function shallClone (obj) {
var obj_kkw = {}; // 拷貝完成後的對象
for ( var i in obj) {
if(obj.hasOwnProperty(i)) { // 如果還拷貝原型對象就刪了這句
obj_kkw[i] = obj[i]
}
}
return obj_kkw;
}
深:深拷貝需要判斷引用數據類型,貌似還要調用遞歸的方式。
function deep (ori,tar) {
var tar = tar || {}
var tostr = Object.prototype.toString;
var arrstr = '[object Array]';
for ( let prop in ori) {
if(ori.hasOwnProperty(prop)) {
if(ori[prop] !== null && typeof(ori[prop]) == 'object') {
if(tostr.call(ori[prop]) == arrstr) {
tar[prop] == [];
} else {
tar[prop] == {};
}
deep (ort[prop], tar[prop]);
} else {
tar[prop] == ori[prop]
}
}
}
return tar;
}