深入理解JavaScript中的对象复制(Object Clone)
程序员文章站
2023-11-28 18:32:58
javascript中并没有直接提供对象复制(object clone)的方法。因此下面的代码中改变对象b的时候,也就改变了对象a。
a = {k1:1, k2:2, k...
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."); }
以上这篇深入理解javascript中的对象复制(object clone)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: 关键词密度过高导致网站降权好处理吗?
下一篇: 共享IP服务器导致网站降权 该这么处理