JavaScript中并没有直接提供对象复制(Object Clone)的方法。因此下面的代码中改变对象b的时候,也就改变了对象a。

a = {k1:1, k2:2, k3:3};
b = a;
b.k2 = 4;

如果只想改变b而保持a不变,就需要对对象a进行复制。

用jQuery进行对象复制

 

在可以使用jQuery的情况下,jQuery自带的extend方法可以用来实现对象的复制。

a = {k1:1, k2:2, k3:3};
b = {};
$.extend(b,a);
 

自定义clone()方法来实现对象复制

下面的方法,是对象复制的基本想法。

Object.prototype.clone = function() {
var copy = (this instanceof Array) ? [] : {};
for (attr in this) {
if (!obj.hasOwnProperty(attr)) continue;
copy[attr] = (typeof this[i] == "object")?obj[attr].clone():obj[attr];
}
return copy;
}; a = {k1:1, k2:2, k3:3};
b = a.clone();

下面的例子则考虑的更全面些,适用于大部分对象的深度复制(Deep Copy)。

function clone(obj) {
// Handle the 3 simple types, and null or undefined
if (null == obj || "object" != typeof obj) return obj; // Handle Date
if (obj instanceof Date) {
var copy = new Date();
copy.setTime(obj.getTime());
return copy;
} // Handle Array
if (obj instanceof Array) {
var copy = [];
for (var i = 0, var len = obj.length; i < len; ++i) {
copy[i] = clone(obj[i]);
}
return copy;
} // Handle Object
if (obj instanceof Object) {
var copy = {};
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
}
return copy;
} throw new Error("Unable to copy obj! Its type isn't supported.");
}

最新文章

  1. Swift 03.Dictionary
  2. js字节转换、字节转换GB等
  3. Intellij idea开发Hadoop MapReduce程序
  4. LintCode &quot;Coins in a Line II&quot; !
  5. Unity--截取屏幕任意区域
  6. CentOS服务器的基本配置和查看
  7. Oracle 课程八之性能优化之10053事件
  8. 服务控件与html标签的一点
  9. div模块变灰
  10. debian install &amp; configure(2)-drivers-ati
  11. Android探究之ANR
  12. ASP.NET 异步返回的Action (编辑中。。。)
  13. Nginx 11阶段的顺序处理
  14. Rhino学习教程——1.5
  15. sql server版本、组件和管理工具
  16. Luogu3605 [USACO17JAN]Promotion Counting晋升者计数
  17. scrapy之Crawspider 腾讯招聘实战案例
  18. 【LeetCode每天一题】Merge Two Sorted Lists(合并两个排序链表)
  19. 数据库--&gt;表操作
  20. 7.5 C++基本序列式容器

热门文章

  1. SVEditor 1.3.6 发布
  2. Python中文字符串截取
  3. JS DOM操作
  4. 尝试在Linux上编译KestrelHttpServer
  5. hmailserver
  6. [BTS] MSDTC
  7. python获取当前日期前后N天或N月的日期
  8. my linux tech object
  9. [数据库]SQL中Group By 的常见使用方法.
  10. 浅谈sql中的in与not in,exists与not exists的区别