怎样实现一个函数clone,对JavaScript中的五种主要的数据类型进行值复制

实现一个函数对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;
}

关于object.prototype.toString.call().slice()在我的另一篇文章中会有讲解

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值