国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

深入理解JavaScript中的對象復制(Object Clone)

2019-11-20 10:00:32
字體:
來源:轉載
供稿:網友

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)就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 边坝县| 乌苏市| 当涂县| 吉水县| 宿州市| 历史| 六安市| 长沙市| 聂荣县| 松阳县| 慈溪市| 同江市| 司法| 冀州市| 清徐县| 鲁山县| 横峰县| 阳曲县| 青岛市| 贺兰县| 南丰县| 玛多县| 衢州市| 龙里县| 新邵县| 中江县| 饶阳县| 马公市| 友谊县| 德庆县| 昭通市| 乐都县| 高雄市| 岚皋县| 叶城县| 中山市| 红桥区| 南召县| 碌曲县| 宿迁市| 临桂县|