实现一个函数对JavaScript中的五个主要数据类型进行值赋值是前端面试中JavaScript经典的考点。
JavaScript中常见的五种数据类型是Number、String、Array、Boolean、Object,这同样是一个考点,通常考察的方式是:
avaScript的typeof返回哪些数据类型?
答案:Number String Array Boolean Object
function clone(obj) {
var copy;
switch (typeof obj) {
case "undefined":
break;
case "string":
copy = obj + "";
break;
case "number":
copy = obj - 0;
break;
case "boolean":
copy = obj;
break;
case "object": // object 分为两种情况 对象(Object)或数组(Array)
if (obj === null) {
copy = null;
} else {
if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {
copy = [];
for (var i = 0; i < obj.length; i++) {
copy.push(clone(obj[i]));
}
} else {
copy = {};
for (var k in obj) {
copy[k] = clone(obj[k]);
}
}
}
break;
default:
copy = obj;
break;
}
return copy;
}