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);
目录
相关文章
|
3月前
|
存储 JavaScript 对象存储
JS中的arguments是什么?
JS中的arguments是什么?
56 0
JS中的arguments是什么?
|
存储 JavaScript
JS arguments对象
众所周知,js是一门相当灵活的语言。当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的东西里面
|
6月前
|
JavaScript 前端开发 API
immutable.js理解
immutable.js理解
73 0
|
11月前
|
JavaScript
js的slice小技巧
js的slice小技巧
54 0
|
存储 JavaScript 前端开发
js深拷贝
了解并掌握js深拷贝
js深拷贝
|
JavaScript
JS之简易deepCopy(简介递归)
JS之简易deepCopy(简介递归)
77 0
|
JavaScript
js lodash对象深拷贝
js lodash对象深拷贝
131 0
|
JavaScript
js 通过lodash拷贝对象
js 通过lodash拷贝对象
103 0