JSに対して深くコピーするのは浅いコピーの理解です.
1601 ワード
この文章はよく書けています.
https://www.cnblogs.com/echolun/p/7889848.html
まとめ:1.深くコピーして浅いコピーは、引用タイプをコピーする時にのみこの概念があります.2実際の仕事では、深くコピーするという考えはどこにでもあります.コピー対象の場合は、現在は1階の引用でも引用の中にも引用があり、直接に深いコピーを使います.3.
https://www.cnblogs.com/echolun/p/7889848.html
まとめ:1.深くコピーして浅いコピーは、引用タイプをコピーする時にのみこの概念があります.2実際の仕事では、深くコピーするという考えはどこにでもあります.コピー対象の場合は、現在は1階の引用でも引用の中にも引用があり、直接に深いコピーを使います.3.
JSON.stringify,JSON.parse 。 deepClone , ? 。 。
深拷贝方法:深拷贝性能消耗比较大,比较少用
var deepCopy = function (extendObj) {
if (typeof extendObj !== 'object' || extendObj === null) {
return extendObj;
} else {
var newObj = extendObj.constructor === Array ? [] : {}
if (JSON) {
newObj = JSON.parse(JSON.stringify(extendObj));
} else {
for (let key in extendObj) {
if (extendObj.hasOwnProperty(key)) {
newObj[key] = typeof extendObj[key] === 'object' ?
deepCopy(extendObj[key]) : extendObj[key];
}
}
}
}
return newObj;
};
浅いコピー:実際のプロジェクトでよく使われるのは、浅いコピーです.function easyCopy(extendObj) {
if (typeof extendObj !== 'object' || extendObj === null) {
return extendObj;
}else {
var tempObj = obj.constructor === 'Array'? [] : {}
if(tempObj == []){
for (let i = 0,len = obj.length; i < len; i++) {
tempObj[i] = obj[i]
}
}else {
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
tempObj[key] = obj[key]
}
}
}
}
return tempObj
}