克隆
浅层克隆
浅层克隆,引用值拷贝,另一个也变。
let obj = {
name : 'abc',
age : 123,
sex : 'female',
card : ['aa','bb']
}
let obj1 ={}
function clone(orgin,target){
let target = target || {}
for(let prop in origin){
target[prop] = origin[prop];
}
}
clone(obj,obj1);
深层克隆
解决浅层克隆,引用值的问题
let obj = {
name : 'abc',
age : 123,
sex : 'female',
card : ['aa','bb']
}
let obj1 ={}
function deepClone(origin,target){
let target = target || {},
toStr = Object.prototype.toString()
arrStr = '[object Array]';
for(let prop in origin ){
if(origin.hasOwnProperty(prop)){
if(origin[prop] !== 'null' && typeof(origin[prop]) == 'object'){
if(toStr.call(origin[prop]) == arrStr){
target[prop] = [];
}else{
target[prop] = {};
}
deepClone(origin[prop],target[prop])
}else{
target[prop] = origin[prop];
}
}
}
return target;
}
三目运算符
条件判断? 是:否 并且返回值
- 字符串与字符串相比 是逐位比对ASCII码 if ‘10’ > ‘9’ false!