JS 实现 deepCopy #46

简介: JS 实现 deepCopy #46
function getType(obj) {
    // 为啥不用typeof? typeof无法区分数组和对象
    if(Object.prototype.toString.call(obj) == '[object Object]') {
        return 'Object';
    }
    if(Object.prototype.toString.call(obj) == '[object Array]') {
        return 'Array';
    }
    return 'nomal';
};
function deepCopy(obj) {
    if (getType(obj) == 'nomal') {
        return obj;
    } else {
        var newObj = getType(obj) == 'Object' ? {} : [];
        for(var key in obj) {
            // 为啥要用hasOwnProperty?不需要从对象的原型链上进行复制
            if(obj.hasOwnProperty(key)) {
                newObj[key] = deepCopy(obj[key]);
            }
        }
    }
    return newObj;
}
var object = [
  {
    title: 'test',
    checked: false
  }
];
deepCopy(object);
目录
相关文章
|
JavaScript
js的slice小技巧
js的slice小技巧
64 0
|
JSON JavaScript Go
js中eval
js中eval
64 0
|
JavaScript
JS unshift() 方法
JS unshift() 方法
59 0
|
JavaScript
Name expected [js/chunk-4b5816b5.0950b124.js:250,6] from UglifyJs
Name expected [js/chunk-4b5816b5.0950b124.js:250,6] from UglifyJs
158 0
Name expected [js/chunk-4b5816b5.0950b124.js:250,6] from UglifyJs
|
存储 JavaScript 前端开发
js深拷贝
了解并掌握js深拷贝
js深拷贝
|
JavaScript
JS之简易deepCopy(简介递归)
JS之简易deepCopy(简介递归)
82 0
|
JavaScript
js lodash对象深拷贝
js lodash对象深拷贝
140 0
|
自然语言处理 JavaScript 前端开发
js中的eval
js中的eval虽然很少用到但是我感觉还是有必要了解一下的

热门文章

最新文章

下一篇
开通oss服务