浅いクローン、深いクローンの実現
8534 ワード
浅いクローン
クローン
obj = {
name: 'hu_time',
age: 23,
sex: 'male'
}
var obj1 = {};
//
function clone(origin, target) {
var target = target || {};
for (let prop in origin) {
target[prop] = origin[prop]
}
}
clone(obj, obj1);
浅いクローンのオブジェクト情報は、新しいクローンオブジェクトの中で入れ子のデータに影響を与えます.クローン
obj = {
name: 'hhhh',
age: 23,
card: ['visa', 'master'],
wife: {
name: 'abc',
son: {
name: 'aaa'
}
}
}
obj1 = {}
function deepClone(origin, target){
var target = target || {},
toStr = Object.prototype.toString,
arrStr = "[object Array]";
for(var prop in origin){
//
if(origin.hasOwnProperty(prop)){
//
if(typeof(origin[prop]) == 'object'){
target[prop] = toStr.call(origin[prop]) == arrStr ? [] : {};
deepClone(origin[prop], target[prop])
}else {
target[prop] = origin[prop]
}
}
}
return target;
}
deepClone(obj, obj1);
VUE深クローン JSON.parse(JSON.stringify(this.array))
for(var prop in obj)
1.元の値かどうかを判断するtypeOf()object 2.配列かそれとも対象typeof()object 1.instance of 2.tonttring 3.construct 3.対応する配列またはオブジェクトを作成する