js对象及元素复制拷贝
1.数组及对象拷贝:
浅拷贝var b=$.extend(false,{},a);//对象浅拷贝
var a={aa:111,bb:{bb1:22}};
var b=$.extend(false,{},a)
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":22}}"
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":22}}"
b.bb.bb1=3300;
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":3300}}"
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":}}"
深拷贝:var b=$.extend(true,{},a);//对象深拷贝
var a={aa:111,bb:{bb1:22}};
var b=$.extend(true,{},a)
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":22}}"
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":22}}"
b.bb.bb1=10000;
10000
JSON.stringify(a);
"{"aa":111,"bb":{"bb1":}}"
JSON.stringify(b);
"{"aa":111,"bb":{"bb1":10000}}"
对象合并:$.extend(a,b);
var a={aa:111,bb:222};
var b={bb:333,cc:444};
var res=$.extend(a,b);
JSON.stringify(a)
"{"aa":111,"bb":333,"cc":444}"
JSON.stringify(b)
"{"bb":333,"cc":444}"
JSON.stringify(res)
"{"aa":111,"bb":333,"cc":444}"
2.元素拷贝
var tr=th.clone();
tr.find("th").children().remove();不影响th
3.实现原理
extend : function(target, options) {
for (name in options) {
target[name] = options[name];
}
return target;
}
};
$ = { //深拷贝
extend : function(deep, target, options) {
for (name in options) {
copy = options[name];
if (deep && copy instanceof Array) {
target[name] = $.extend(deep, [], copy);
} else if (deep && copy instanceof Object) {
target[name] = $.extend(deep, {}, copy);
} else {
target[name] = options[name];
}
}
return target;
}
};
具体分为三种情况:
a. 属性是数组时,则将target[name]初始化为空数组,然后递归调用extend;
b. 属性是对象时,则将target[name]初始化为空对象,然后递归调用extend;
c. 否则,直接复制属性。
js对象及元素复制拷贝的更多相关文章
- Objective-C:OC内部可变对象和不可变对象的深(复制)拷贝问题思考:
OC内部:可变对象和不可变对象的深(复制)拷贝问题思考: 不可变对象: 例如NSString对象,因为NSString对象是常量字符串,所以,不可以更改其内容,但是可以修改指向该字符串的指针指向 ...
- js对象进行浅复制,深拷贝的方法
js对象浅拷贝和深拷贝详解 本文为大家分享了JavaScript对象的浅拷贝和深拷贝代码,供大家参考,具体内容如下 1.浅拷贝 拷贝就是把父对像的属性,全部拷贝给子对象. 下面这个函数,就是在做拷 ...
- JS对象和数组深浅拷贝总结②
在实际开发中遇到过太多次深拷贝浅拷贝的问题.总结一下~ JS数据存储和深浅拷贝实际运用① 这是之前写过的一篇文章,解决浅拷贝深拷贝的问题只说了一种方法,今天来补充一下. 介绍深拷贝和浅拷贝都在上一篇文 ...
- js对象/数组深度复制
今天碰到个问题,js对象.数组深度复制:之前有见过类似的,不过没有实现函数复制,今晚想了一下,实现代码如下: function clone(obj) { var a; if(obj instanceo ...
- js 对象的深复制 解决不能复制undefined (递归)
用普通的拷贝 JSON.parse和 JSON.stringify 进行对象拷贝是不会拷贝undefined //普通的拷贝 const obj = { a: { ...
- js对象克隆, 深复制.
亲测有效: //对象克隆 function clone(obj) { // Handle the 3 simple types, and null or undefined if (null == o ...
- JS对象复制
在JavaScript很多人复制一个对象的时候都是直接用"=",因为大家都觉得脚本语言是没有指针.引用.地址之类的,所以直接用"="就可以把一个对象复制给另外一 ...
- js 对象深复制,创建对象和继承
js 对象深复制,创建对象和继承.主要参考高级编程第三版,总结网上部分资料和自己的代码测试心得.每走一小步,就做一个小结. 1.对象/数组深复制 一般的=号传递的都是对象/数组的引用,如在控制台输入 ...
- ES6复制拷贝数组,对象,json数组
扩展运算符的应用spread打散数组[...] (1)复制数组 数组是复合的数据类型,直接复制的话,只是复制了指向底层数据结构的指针,而不是克隆一个全新的数组. const a1 = [1, 2]; ...
随机推荐
- vue项目中, 字段信息为空时不渲染,是真的不渲染吗
代码 样式,宽度pro_proj 此class设置有宽度,考虑字数如果太多就进入下一行就没有设置高度 样式改为 数据 渲染. 开始以为,null时vue不渲染,然后审查元素,发现渲染的dom是存在的, ...
- Apple公司Darwin流式服务器源代码分析
当前,伴随着Internet的飞速发展,计算机网络已经进入到每一个普通人的家庭.在这个过程中,一个值得我们关注的现象是:Internet中存储和传输内容的构成已经发生了本质的改变,从传统的基于文本或少 ...
- bzoj3491: PA2007 Subsets
Description 有一个集合U={1,2,…,n),要从中选择k个元素作为一个子集A.若a∈A,则要有a*X不属于A,x是一个给定的数.求可选方案对M取模后的值. 1< = N< = ...
- 将 GitHub 的某人的特定仓库复制到自己的账户下 的方法
访问仓库页面,点击 Fork 按钮创建自己的仓库 Fork 就是将 GitHub 的某个特定仓库复制到自己的账户下. Fork 出的仓库与原仓库是两个不同的仓库,开发者可以随意编辑. 新建的仓库名为& ...
- c#day04从控制台获取一个字符
class EnumStruct { //定义QQ的状态枚举 Qme QnLine OffLine Leave Busy //提示用户现在一个状态 然后接收 ,并将用户输入转换成枚举类 enum Qs ...
- /dev/null 2>&1 解释
cmd >a 2>a 和 cmd >a 2>&1 为什么不同?cmd >a 2>a :stdout和stderr都直接送往文件 a ,a文件会被打开两遍,由 ...
- 第2课 类型推导(2)_decltype关键字
1. decltype关键字 (1)auto所修饰的变量必须被初始化,编译器才能通过初始化来确定auto所代表的类型,即必须先定义变量. (2)decltype可以在编译期推导出一个变量或表达式的结果 ...
- Android之socket多线程
一.添加权限 <uses-permission android:name="android.permission.INTERNET" /> 二.输入输出流 客户端和服务 ...
- Linux下单独编译安装PHP扩展包
首先进入PHP源码目录,比如这个: root@vultr:~/php-/ext/soap# 运行下PHP目录下的phpize,接着就可以和普通代码一样,配置,编译,安装了(注意:有些库可能可以配置参数 ...
- 查看计算机CPU、内存使用情况
Shift + Ctrl + Esc,打开Windows任务管理器,点击性能,如图: 可以清楚的看到整台机子的CPU.内存使用情况,其中CPU使用记录下有8个小窗口,因为博主的CPU是8核的,讲讲CP ...