JS 深度拷贝 Object Array

function cloneObj(o)
{
var isArray = o instanceof Array;
var isObject = o instanceof Object;
if (!isObject) return o; var n = (isArray ? [] : {});
for (var k in o) n[k] = cloneObj(o[k]); return n;
}

遇到的问题

typeof [] 结果为 object
typeof {} 结果为 object

[] instanceof Array 结果为 true
{} instanceof Object 结果为 true
[] instanceof Object 结果也为 true

说明JS中 Array 是 Object 的子类。

JS 深度拷贝 Object Array的更多相关文章

  1. js 深度拷贝

    js 数据类型 分为2种: 基本数据类型:Undefined.Null.Boolean.Number.String 复杂数据类型:Object.Array.function 他们的区别是在内存中的存储 ...

  2. js实现深度拷贝

    js实现拷贝,使用普通赋值对象,在操作其中一个对象值的时候,另一个也会更改,不符合需求 因此引入深度拷贝,以下为实现深度拷贝的几种法: Object.assign // 合并多个对象 var targ ...

  3. 再谈js对象数据结构底层实现原理-object array map set

    如果有java基础的同学,可以回顾下<再谈Java数据结构—分析底层实现与应用注意事项>:java把内存分两种:一种是栈内存,另一种是堆内存.基本类型(即int,short,long,by ...

  4. js 数组的深度拷贝 的四种实现方法

    首先声明本人资质尚浅,本文只用于个人总结.如有错误,欢迎指正.共同提高. --------------------------------------------------------------- ...

  5. js 判断值为Array or Object的方法

    ①obj instanceof Array / Object ②Array.prototype.isPrototypeOf(obj) ③Object.prototype.toString.call(o ...

  6. Js判断参数(String,Array,Object)是否为undefined或者值为空

    在一些前端控件要提交数据到服务器端的数据验证过程中,需要判断提交的数据是否为空.如果是普通表单的字符串数据,只需要在 trim 后判断 length 即可,而这里需要的数据可以是各种不同的类型,通过 ...

  7. javascript中的继承与深度拷贝

    前言 本篇适合前端新人,下面开始...... 对于前端新手来说(比如博主),每当对js的对象做操作时,都是一种痛苦,原因就是在于对象的赋值是引用的传递,并非值的传递,虽然看上去后者赋值给了前者,他们就 ...

  8. js深度克隆对象

    js深度克隆对象 js深度克隆对象简单的记录一下,如下代码: var obj = { typeOf: function(obj) { const toString = Object.prototype ...

  9. JS数据拷贝

    JS的拷贝可分为浅拷贝和深拷贝: 浅拷贝:如果数组元素是基本类型,就会拷贝一份,互不影响,而如果是对象或者数组,就会只拷贝对象和数组的引用,这样我们无论在新旧数组进行了修改,两者都会发生变化. 深拷贝 ...

随机推荐

  1. PKU 3983

    很久前写了一个24点的算法,刚好POJ上也有个24点,顺便给解了,POJ上的相对于我原始来写的较为简单许多,因为,限制了数字的位置固定,实际上24点的话是不可能限制这个固定的,所以我之前会对数据进行一 ...

  2. 基于eclipse-java的平台上搭建安卓开发环境

    首先感谢好人的分享!http://www.mamicode.com/info-detail-516839.html 系统:windows 7 若想直接安装eclipse—android的,请启动如下传 ...

  3. W3C代码标准规范

    一.目的: 为什么要遵循标准我们作为生产者实际上只是位于中游,既不是上游的浏览器制造商,他们是标准的真正制定者,也不算是下游,他们是浏览器的终端使用者.这个角色就意味着我们位于一个接口的位置,我们需要 ...

  4. 《HP大规模敏捷开发实践》读书笔记

    读这本书的心得,敏捷是实践出来的,哪怕不懂srcum**等方法,只要坚持心中的价值观,朝一个方向改进,哪怕不能“任何时候都拥有符合发布要求的代码”,今天比昨天好,也是成功.     通过业务分析确定开 ...

  5. Razor视图引擎-基础语法

    所有以 @开头 或 @{ /* 代码体 */ }  (在@与{直接不得添加任何空格) 的部分代码都会被ASP.NET引擎进行处理. 在 @{ /*代码体*/ } 内的代码每一行都必须以";& ...

  6. Xamarin Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy

    Android.Views.WindowManagerBadTokenException: Unable to add window -- token android.os.BinderProxy@ ...

  7. MVCC PostgreSQL实现事务和多版本并发控制的精华

    原创文章,同步发自作者个人博客,http://www.jasongj.com/sql/mvcc/ PostgreSQL针对ACID的实现机制 事务的实现原理可以解读为RDBMS采取何种技术确保事务的A ...

  8. ionic中的service简单写法

    在service中写服务 服务名叫feedService .service('feedService',function($ionicLoading,$q,$http){ return{ //获取反馈 ...

  9. JavaScript,DOM经典基础面试题

    JavaScript的数据类型 JavaScript的数据类型可以分为原始类型和对象类型 原始类型包括string,number和Boolean三种,其中字符串是使用一对单引号或者一堆双引号括起来的任 ...

  10. 我们还是太NAive

    蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡蛤鸡