前端面试题

这里是一些前端面试题,给出一种解决方案,仅供参考!

1. 请实现对象的深复制?

对象深复制,简单来说,就是重新申请一块内存来存储跟原来结构一样的对象。对深复制之后的对象进行修改,对原对象没有任何影响。

function objDeepCopy ( originObj ) {
    var newObj = Object.prototype.toString.call( originObj ) === '[object Array]' ? [] : {};
    if(typeof originObj !== 'object' || originObj === null) {
        return originObj;   // 不满足条件就直接返回原值
    } else if (window.JSON) {
        newObj = JSON.parse(JSON.stringify(originObj));   // 如果支持JSON的window全局方法,这种方式效率是最高的。
    } else {
        for(var property in obj){
            newObj[property] = (typeof originObj[property] === 'object' && originObj[i] != null) ? objDeepCopy(originObj[property]) : originObj[property];
        }
    }
    return newObj;
};
Spy 15 July 2015