实现一个函数对JavaScript中的五个主要数据类型进行值赋值是前端面试中JavaScript经典的考点。

JavaScript中常见的五种数据类型是Number、String、Array、Boolean、Object,这同样是一个考点,通常考察的方式是:
 
JavaScript的typeof返回哪些数据类型?
答案:Number String Array Boolean Object
 
那么下面我们来实现以下这个函数
 
function clone( obj ) {
    var copy;
    switch( typeof obj ) {
        case "undefined":
            break;
        case "number":
            copy = obj - 0;
            break;
        case "string":
            copy = obj + "";
            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 j in obj) {
           copy[j] = clone(obj[j]);
           }
           }
            }
            break;
        default:
            copy = obj;
            break;
    }
    return copy;
}
---------------------