//1.判断数据类型
function paramType(o){
if(o===null) return "Null";
if(o===undefined) return "Undefined";
return Object.prototype.toString.call(o).slice(8,-1);
}
//2.深度克隆数组和对象
function deepClone(obj){
var result={},oClass=paramType(obj);
//确定result的类型
if(oClass==="Object"){
result={};
}else if(oClass==="Array"){
result=[];
}else{
return obj;
}
for(key in obj){
var copy=obj[key];
if(paramType(copy)=="Object"){
result[key]=arguments.callee(copy);//递归调用
}else if(paramType(copy)=="Array"){
result[key]=arguments.callee(copy);
}else{
result[key]=obj[key];
}
}
return result;
}
var oldObj = {
a:[' rr ',{
k:' juio '
}],
b:' 789 ',
c:{
c:' 090 ',
d:[' ppp ',{
h:' nnbnbn '
}]
}
}
var newObj = deepClone(oldObj);
oldObj.b = '';
console.log(newObj.b);//' 789 '
//3.去除数组或对象中字符串两端的空格
function paramTrim(param) {
for (i in param) {
if(paramType(param[i]) == 'Object'||paramType(param[i]) == 'Array') {
paramTrim(param[i]);
}else if(paramType(param[i]) == 'String'){
param[i] = param[i].trim();
}
}
}
var a =[
{a:' 123 ',b:' p op ',c:[' 23 ']},
' jjj ',
[' ko ',{
k:' mk '
}],
' nju '
]
paramTrim(a);
console.log(a);