function replaceString(target, keys, str) {
let temp = target;
keys.forEach(function (item) {
temp = temp.replace(item, str)
});
return temp;
};
function objectKeytoArray(obj) {
let temp = [];
for (let key in obj) {
temp.push(key);
};
return temp;
};
function judgeDataType(target) {
let typeMessage = Object.prototype.toString.apply(target);
typeMessage = replaceString(typeMessage, ["[", "]"], "");
return typeMessage.split(" ")[1];
};
function cloneObject(obj) {
let temp = {};
for (let key in obj) {
temp[key] = obj[key];
};
return temp;
};
function clearObjectProperty(obj) {
let type = judgeDataType(obj);
if (type !== "Object") return console.error("目标应为对象 (fn judgeDataType)");
if (objectKeytoArray(obj).length === 0) return console.error("目标不能是空对象 (fn judgeDataType)");
let temp = cloneObject(obj);
for (let key in temp) {
switch (judgeDataType(temp[key])) {
case "Array":
temp[key] = [];
break;
case "String":
temp[key] = "";
break;
case "Object":
clearObjectProperty(temp[key])
break;
case "Number":
temp[key] = 0;
break;
default:
temp[key] = undefined;
};
};
return temp;
};
let targetData = {
a: [1, 2, 3, 4, 5],
b: "仍然是好的",
c: {
key: "确实是的"
},
d: /abc/
};
console.log(clearObjectProperty(targetData))
console